Voice control of computing devices

ABSTRACT

Systems and methods for voice control of computing devices are disclosed. Applications may be downloaded and/or accessed by a device having a display, and content associated with the applications may be displayed. Many applications do not allow for voice commands to be utilized to interact with the displayed content. Improvements described herein allow for non-voice-enabled applications to utilize voice commands to interact with displayed content by determining screen data displayed by the device and utilizing the screen data to determine an intent associated with the application. Directive data to perform an action corresponding to the intent may be sent to the device and may be utilized to perform the action on an object associated with the displayed content.

BACKGROUND

A user typically interacts with displayed content through tactile means,such as a remote control, a mouse, a keyboard, and/or touch input.Described herein are improvements in technology that will help, amongother things, to provide additional input means for displayed content.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth below with reference to theaccompanying figures. In the figures, the left-most digit(s) of areference number identifies the figure in which the reference numberfirst appears. The use of the same reference numbers in differentfigures indicates similar or identical items. The systems depicted inthe accompanying figures are not to scale and components within thefigures may be depicted not to scale with each other.

FIG. 1 illustrates a schematic diagram of an example environment forcontrolling computing devices via audible input.

FIG. 2 illustrates a conceptual diagram of components of a user deviceand a remote system involved in controlling computing devices viaaudible input.

FIG. 3 illustrates a flow diagram of an example process for controllingcomputing devices via audible input.

FIG. 4 illustrates an example user interface utilized for controllingcomputing devices via audible input.

FIG. 5 illustrates another example user interface utilized forcontrolling computing devices via audible input.

FIG. 6 illustrates a flow diagram of an example process for controllingcomputing devices via audible input.

FIG. 7 illustrates a flow diagram of another example process forcontrolling computing devices via audible input.

FIG. 8 illustrates a flow diagram of another example process forcontrolling computing devices via audible input.

FIG. 9 illustrates a flow diagram of an example process for rankingdirective data to be sent to a device displaying content.

FIG. 10 illustrates a flow diagram of another example process forranking directive data to be sent to a device displaying content.

FIG. 11 illustrates a flow diagram of another example process forranking directive data to be sent to a device displaying content.

FIG. 12 illustrates a conceptual diagram of components of a speechprocessing system for processing audio data provided by one or moredevices.

DETAILED DESCRIPTION

Systems and methods for voice control of computing devices are describedherein. Take, for example, a content-viewing application being displayedon a user device, such as a television. Typically, when the user desiresto interact with the content being displayed on the device, the useruses tactile means of user input, such as pressing buttons on a remotecontrol, moving and pressing buttons on a mouse, pressing keys on akeyboard, and/or providing touch input in examples where the user deviceincludes a touchscreen. While these input means may be functional,additional input means may be required and/or desired by the user.Described herein are systems and methods for voice control of computingdevices, particularly when the computing devices are displaying contentassociated with an application that has not been developed withvoice-control functionality. These applications will be described hereinas third-party applications.

By way of example, a user may download or otherwise gain access to athird-party application that has been optimized for input controls otherthan voice-based input controls (e.g., touch screen, keyboard, mouse,remote control, etc.). When a user wants to access the third-partyapplication, the user may provide an audible command representing arequest to open or otherwise view content of the application. The audiocorresponding to the audible command may be captured by a microphone ofthe user device or an accessory device, which may generate correspondingaudio data. The audio data may be sent to a remote system, which maydetermine an intent associated with the audio data. Here, the intent maybe to open or otherwise display content of a requested third-partyapplication. Once displayed, the user may desire to interact with thedisplayed content through audio input means.

The user device and/or the accessory device may determine that contentof the third-party application is being displayed on the user device.Data indicating that content of the third-party application is beingdisplayed and/or indicating an identifier of the application may be sentto a remote system. The remote system may determine whether theapplication is authorized for voice controlling content based at leastin part on an indication that the developer or other party responsiblefor the application has indicated that the application may be voiceenabled. In examples where the data indicates that the application maybe voice enabled, components of the user device and/or the accessorydevice may query or otherwise receive context information, alsodescribed herein as screen data, corresponding to the content displayedon the user device. Examples of context information may includeindications of objects that are displayed on the user device and/orinformation indicating relationship between objects. This informationmay be sent to the remote system and may be utilized to identify whichportions of the content may be selected and/or interacted with by theuser and/or possible actions that may be taken with respect to thoseobjects.

Continuing with the example above, the user may provide a voice commandto interact with the content displayed on the user device. Themicrophone of the user device and/or the accessory device may captureaudio corresponding to the voice command and may generate correspondingaudio data. The audio data may be sent to the remote system, which mayperform automatic speech recognition on the audio data to generatecorresponding text data. The remote system may utilize natural languageunderstanding techniques based on the text data to determine one or moreintents that correspond to the voice command. The remote system mayperform named entity recognition in connection with the natural languageunderstanding to identify portions of the text data that correspond to anamed entity that may be recognizable by the remote system. The processmay link a text portion to a specific entity known to the remote system.To perform named entity resolution, the remote system may utilize thecontext information provided by the user device and/or the accessorydevice. The context information may be used for entity resolution, forexample, by matching results of the automatic speech recognitioncomponents with different entities, such as types of objects displayedon the user device. In this way, a data source database of the remotesystem may be populated with some or all of the context informationprovided by the user device and/or the accessory device to assist innamed entity recognition.

Based at least in part on an indication that content of the third-partyapplication is displayed on the user device and/or on receipt of thecontext information, a speechlet of the remote system configured toassist in voice controlling third-party applications may be called anddata representing the results of the natural language understandingtechniques may be sent to the speechlet for processing. The speechletmay generate directive data corresponding to a directive based at leastin part on the intent determined by the natural language understandingcomponent and any values associated with that intent. The directive datamay include data indicating that an action is to be taken with respectto one or more portions of the content displayed on the device.

The directive data may be sent to the user device and/or the accessorydevice, which may determine an action to take with respect to thecontent based at least in part on the directive data. A node processingcomponent of the user device and/or the accessory device may receivedata corresponding to the action and the object on which the action isto be applied and may attempt to perform the action on a nodecorresponding to the object. This process may include matchingsearchable text associated with the directive to text associated withthe nodes of the content displayed on the device. A confidence map maybe applied over the nodes and the node having the highest confidencethat the action is to be performed thereon may be selected. The actionmay be performed on the selected node. In this way, the user's voicecommand may be utilized to interact with content of the third-partyapplication, even when the third-party application has not beenconfigured to control displayed content or the computing device viavoice commands.

Additionally, or alternatively, the user device, accessory device,and/or the remote system may assist in utilizing user utterances tointeract with the third-party application by generating and/or causingdisplay of tips for the user to follow. For example, utilizing thecontext information indicating the objects displayed on the screen,overlay content may be generated that provides numbers and/or letters,for example, associated with the displayed objects. As described herein,the overlay content may be described as including “hints” for userinteraction with the system. The user, seeing the overlay content, maythen provide a voice command that instructs the system to perform anaction on a selected number and/or letter. By so doing, a confidence atwhich the system determines which action to perform from the voicecommand may be increased. Additionally, or alternatively, in exampleswhere multiple objects displayed on the user device correspond to thesame or similar actions, the system may identify the relationshipbetween the objects and may generate a modified hint, which may simplifyuser interaction with the system.

Additionally, or alternatively, the system may be configured to identifyand/or determine when the content displayed on the user device changes.For example, when a user interacts with the content displayed on theuser device, the action performed with respect to the content may causethe content to be updated and/or for different content to be displayed.The user device and/or the accessory device may be configured toidentify content-change events and may send updated context informationto the remote system based at least in part on the content-change event.The updated context information may inform the natural languageunderstanding, including the named entity recognition, and/or thedirective generation for subsequent voice commands.

Additionally, or alternatively, the system may be configured to rankdirective data and/or actions in examples where a determined intentcorresponds to more than one action to be performed on a given object.For example, the user utterance may represent an intent that may bedetermined to correspond to more than one action and/or that maycorrespond to an action that may be performed with respect to multipleobjects. In these examples, the directive data and/or actions may beranked such that an ambiguous utterance may result in highest-rankeddirective data being sent to the user device and/or a highest-rankedaction being selected. Ranking of directive data and/or actions may bebased at least in part on historical use data, the applicationassociated with the displayed content, location of objects with respectto each other as displayed on the user device, categorization ofintents, previous voice commands, and/or context information updating,for example.

The present disclosure provides an overall understanding of theprinciples of the structure, function, manufacture, and use of thesystems and methods disclosed herein. One or more examples of thepresent disclosure are illustrated in the accompanying drawings. Thoseof ordinary skill in the art will understand that the systems andmethods specifically described herein and illustrated in theaccompanying drawings are non-limiting embodiments. The featuresillustrated or described in connection with one embodiment may becombined with the features of other embodiments, including as betweensystems and methods. Such modifications and variations are intended tobe included within the scope of the appended claims.

Additional details are described below with reference to several exampleembodiments.

FIG. 1 illustrates a schematic diagram of an example system 100 forvoice control of computing devices. The system 100 may include, forexample, a user device 102 and one or more accessory devices 104(a)-(b).The user device 102 may include a display 106, which may be configuredto display content associated with one or more third-party applications.As shown in FIG. 1, the user device 102 is a television. It should beunderstood that while a television is used herein as an example userdevice 102, other devices that display content, such as, for example, atablet, a mobile phone, a projector, a computer, and/or other computingdevices are included in this disclosure. In examples, the system 100 mayinclude one or more accessory devices 104(a)-(b). The accessory device104(a)-(b) may be computing devices configured to communicate with eachother, with the user device 102, and/or with a remote system 108 via anetwork 110. It should be understood that some or all of the operationsdescribed herein as being performed with respect to the user device 102may additionally, or alternatively, be performed with respect to one ormore of the accessory devices 104(a)-(b). It should also be understoodthat some or all of the operations described herein as being performedwith respect to the one or more accessory devices 104(a)-(b) may beperformed by the user device 102.

The user device 102 and/or the accessory devices 104(a)-(b) may include,for example, one or more processors 112, one or more network interfaces114, one or more speakers 116, one or more microphones 118, one or moredisplays 106, and memory 120. The components of the user device 102and/or the accessory devices 104(a)-(b) are described in more detailbelow. The remote system 108 may include, for example, one or moreprocessors 122, one or more network interfaces 124, and memory 126. Thecomponents of the remote system are also described in more detail below.

By way of example, the microphones 118 of the user device 102 and/or theaccessory devices 104(a)-(b) may be configured to capture audiorepresenting one or more voice commands from a user located in anenvironment associated with the user device 102 and/or the accessorydevices 104(a)-(b). The microphones 118 may be further configured togenerate audio data corresponding to the captured audio. The speakers116 may be configured to receive audio data from other components of theuser device 102 and/or the accessory devices 104(a)-(b) and/or theremote system 108. The speakers 116 may be further configured to outputaudio corresponding to the audio data. The displays 106 may beconfigured to present renderings of content associated with anapplication, such as a third-party application.

As used herein, a processor, such as processor(s) 112 and/or 122, mayinclude multiple processors and/or a processor having multiple cores.Further, the processors may comprise one or more cores of differenttypes. For example, the processors may include application processorunits, graphic processing units, and so forth. In one implementation,the processor may comprise a microcontroller and/or a microprocessor.The processor(s) 112 and/or 122 may include a graphics processing unit(GPU), a microprocessor, a digital signal processor or other processingunits or components known in the art. Alternatively, or in addition, thefunctionally described herein can be performed, at least in part, by oneor more hardware logic components. For example, and without limitation,illustrative types of hardware logic components that can be used includefield-programmable gate arrays (FPGAs), application-specific integratedcircuits (ASICs), application-specific standard products (ASSPs),system-on-a-chip systems (SOCs), complex programmable logic devices(CPLDs), etc. Additionally, each of the processor(s) 112 and/or 122 maypossess its own local memory, which also may store program components,program data, and/or one or more operating systems.

The memory 120 and/or 126 may include volatile and nonvolatile memory,removable and non-removable media implemented in any method ortechnology for storage of information, such as computer-readableinstructions, data structures, program component, or other data. Suchmemory 120 and/or 126 includes, but is not limited to, RAM, ROM, EEPROM,flash memory or other memory technology, CD-ROM, digital versatile disks(DVD) or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, RAID storagesystems, or any other medium which can be used to store the desiredinformation and which can be accessed by a computing device. The memory120 and/or 126 may be implemented as computer-readable storage media(“CRSM”), which may be any available physical media accessible by theprocessor(s) 112 and/or 122 to execute instructions stored on the memory120 and/or 126. In one basic implementation, CRSM may include randomaccess memory (“RAM”) and Flash memory. In other implementations, CRSMmay include, but is not limited to, read-only memory (“ROM”),electrically erasable programmable read-only memory (“EEPROM”), or anyother tangible medium which can be used to store the desired informationand which can be accessed by the processor(s).

Further, functional components may be stored in the respective memories,or the same functionality may alternatively be implemented in hardware,firmware, application specific integrated circuits, field programmablegate arrays, or as a system on a chip (SoC). In addition, while notillustrated, each respective memory, such as memory 120 and/or 126,discussed herein may include at least one operating system (OS)component that is configured to manage hardware resource devices such asthe network interface(s), the I/O devices of the respective apparatuses,and so forth, and provide various services to applications or componentsexecuting on the processors. Such OS component may implement a variantof the FreeBSD operating system as promulgated by the FreeBSD Project;other UNIX or UNIX-like variants; a variation of the Linux operatingsystem as promulgated by Linus Torvalds; the FireOS operating systemfrom Amazon.com Inc. of Seattle, Wash., USA; the Windows operatingsystem from Microsoft Corporation of Redmond, Wash., USA; LynxOS aspromulgated by Lynx Software Technologies, Inc. of San Jose, Calif.;Operating System Embedded (Enea OSE) as promulgated by ENEA AB ofSweden; and so forth.

The network interface(s) 114 and/or 124 may enable communicationsbetween the components and/or devices shown in system 100 and/or withone or more other remote systems, as well as other networked devices.Such network interface(s) 114 and/or 124 may include one or more networkinterface controllers (NICs) or other types of transceiver devices tosend and receive communications over the network 110.

For instance, each of the network interface(s) 114 and/or 124 mayinclude a personal area network (PAN) component to enable communicationsover one or more short-range wireless communication channels. Forinstance, the PAN component may enable communications compliant with atleast one of the following standards IEEE 802.15.4 (ZigBee), IEEE802.15.1 (Bluetooth), IEEE 802.11 (WiFi), or any other PAN communicationprotocol. Furthermore, each of the network interface(s) 114 and/or 124may include a wide area network (WAN) component to enable communicationover a wide area network.

In some instances, the remote system 108 may be local to an environmentassociated the user devices 102 and/or the accessory devices 104(a)-(b).For instance, the remote system 108 may be located within the userdevices 102 and/or the accessory devices 104(a)-(b). In some instances,some or all of the functionality of the remote system 108 may beperformed by one or more of the user devices 102 and/or the accessorydevices 104(a)-(b).

The memory of the user device 102 and/or the accessory devices104(a)-(b) may include computer-executable instructions, described belowas components of the memory 120, that when executed by the one or moreprocessors 112 may cause the one or more processors 112 to performvarious operations. Exemplary components of the memory 120 of the userdevice 102 and/or the accessory devices 104(a)-(b) may include athird-party application storage and/or access component 128, a deviceevent controller 130, a directive handler 132, a node processingcomponent 134, a keyword processing component 136, a third-partyapplication interface component 138, a ranking component 140, and/or anoverlay component 142. Each of these exemplary components of the memory120 are described below.

The memory 126 of the remote system 108 may include computer-executableinstructions, described below as components of the memory 126, that whenexecuted by the one or more processors 122 may cause the one or moreprocessors 122 to perform various operations. Exemplary components ofthe memory 126 of the remote system 108 may include a user profileand/or account component 144, an automatic speech recognition component146, a natural language understanding component 148, one or morespeechlets 150, a third-party application registry 152, and/or a rankingcomponent 154. Each of these exemplary components of the memory 126 aredescribed below.

The user profile/account component 144 of the memory 126 may beconfigured to store associations between users, user profiles, useraccounts, user devices, accessory devices, the remote system, and/orthird-party applications. In this way, data sent from user device and/oraccessory devices may be associated with voice commands and/orapplications to which voice commands are directed. It should beunderstood that a given user profile may be associated with one or moreapplications and/or one or more devices, and that a given user accountmay be associated with one or more than one user profile.

For purposes of describing, in more detail, the components of the memory120 and/or the memory 126, functionality of the memory 120 and/or thememory 126 will be described with respect to an example voice commandand the process of controlling the user device 102 based on that voicecommand.

With respect to the third-party application storage and/or accesscomponent 128, it may be configured to store third-party applicationsthat have been downloaded onto the memory 120 of the user device 102and/or the accessory devices 104(a)-(b). Additionally, or alternatively,the third-party application storage and/or access component 128 may beconfigured to access third-party applications that the user device 102and/or the accessory devices 104(a)-(b) have been authorized to use.Additionally, or alternatively, the third-party application storageand/or access component 128 may be configured to store and/or accesscontext information, also described as screen data, associated with thethird-party applications, such as document object model (DOM)information.

The third-party application interface component 138 may be configured toreceive data indicating the identity of the application corresponding tothe content being displayed on the user device 102. The third-partyapplication interface component 138 may be further configured to receivescreen data associated with the content displayed on the user device102. The data indicating the identity of the application may be sent,via the network 110, to the remote system 108. Additionally, the screendata may be sent, via the network 110, to the remote system 108. Thescreen data may include DOM information associated with the content. TheDOM information may include identification of one or more objectscorresponding to the displayed content and/or one or more relationshipsbetween the objects.

The DOM may be an application programming interface (API) thatrepresents hypertext markup language (HTML), extensible markup language(XML), and/or other computing languages in a tree structure where eachnode of the tree represents an object representing part of theapplication code. When an object is acted upon in the tree,corresponding changes may be reflected in the display of content of theapplication. One or more libraries associated with the API may beprovided to allow one or more actions to be taken with respect to thenodes in the DOM tree.

Based at least in part on receiving the data indicating that contentassociated with a third-party application is displayed on the userdevice 102, the third-party application registry 152 may determinewhether the third-party application is registered or otherwiseauthorized to provide voice control of the content displayed on the userdevice 102. For example, when a third-party application developerpublishes an application for sale or consumption on an applicationstore, the developer may be queried to determine whether the developerwould like to voice enable the application. If the developer indicatesthat voice enablement is authorized, an indication of the applicationmay be stored in the third-party application registry. Thereafter, whendata indicating that content of the application is being displayed on adevice, audio data corresponding to voice commands may be processed tovoice enable the application.

To illustrate additional functionality of the memory 120 and/or 126, anexample of a user providing a voice command to interact with thedisplayed content is provided herein. The user may provide an audiblevoice command, which may be captured by the microphones 118. Themicrophones 118 may generate corresponding audio data, which may besent, via the network 110, to the remote system 108.

The automatic speech recognition (ASR) component 146 may receive theaudio data and may generate corresponding text data. Performing ASR isdescribed in more detail below with respect to FIG. 12. The naturallanguage understanding (NLU) component 148 may receive the text datagenerated by the ASR component 146 and may determine an intentassociated with the voice command. Performing NLU is described in moredetail below with respect to FIG. 12. The NLU component 148, as part ofdetermining the intent associated with the voice command, may performnamed entity recognition in connection with the natural languageunderstanding to identify portions of the text data that correspond to anamed entity that may be recognizable by the remote system 108. Theprocess may link a text portion to a specific entity known to the remotesystem 108.

To perform named entity recognition, the remote system may utilize thescreen data provided by the third-party application interface component138 of the user device 102 and/or the accessory devices 104(a)-(b). Thescreen data may be used for entity recognition, for example, by matchingresults of the automatic speech recognition components with differententities associated with the application, such as objects displayed onthe user device 102. In this way, a data source database may bepopulated with some or all of the screen data provided by the userdevice 102 and/or the accessory device 104(a)-(b) to assist in namedentity recognition. In this way, the NLU component 148 may be trained orotherwise configured to select an intent based on the screen data thatis currently being displayed on the user device 102. Additionally, theNLU component 148 may determine a value for one or more slots associatedwith the intent based on the screen data.

For example, a user viewing content associated with a video-playingapplication may provide a user command to “play the cat video.” Based atleast in part on the indication that content of the third-partyapplication is being displayed on the user device 102, screen dataindicating the objects being displayed may be sent to and received bythe NLU component 148. The screen data may include an indication of oneor more intents that may be specific to the application being utilizedby the user and/or an indication of the objects currently beingdisplayed. In the example of the video-playing application, the objectsmay include one or more play buttons, selectable text associated withvideos, video categories, and/or text-input fields, for example. Theintents may include, for example, playing video, selecting an object,and/or performing a keyword search. The NLU component 148 may beconfigured to determine the intent that corresponds to the voice commandand determine one or more values to fill with slots associated with theintent. For example, the determined intent may be “play,” and the valuethat may fill the slot associated with that intent may be “cat video.”The determination of intent and slot values may be based at least inpart on a personalized finite state transducer to improve intentdetermination and slot value determination.

Based at least in part on an indication that the application associatedwith the displayed content has been authorized for voice enablementutilizing the system described herein, the remote system 108 may senddata corresponding to the intent and value(s) associated therewith to aspeechlet 150 configured to generate directives for third-partyapplications. The speechlet 150 may generate the directive for the userdevice 102 to perform based at least in part on the information receivedfrom the NLU component 148. Some or all of the screen data associatedwith the displayed content may be provided by the third-partyapplication interface component 138 of the user device 102 and/or theaccessory devices 104(a)-(b). The screen data may be utilized togenerate a directive for the user device 102 and/or the accessorydevices 104(a)-(b) to be performed that effectuates the intentdetermined by the NLU component 148.

In examples, the ranking component 154 may be configured to rankdirectives in examples where a determined intent corresponds to morethan one action to be performed on a given object. For example, thevoice command may represent an intent that may be determined tocorrespond to more than one action and/or that may correspond to anaction that may be performed with respect to multiple objects. In theseexamples, the directives may be ranked such that an ambiguous voicecommand may result in a highest-ranked directive being sent to the userdevice 102. Ranking of directives may be based at least in part onhistorical use data, the application associated with the displayedcontent, location of objects with respect to each other as displayed onthe user device, categorization of intents, previous voice commands,and/or screen data updating.

For example, historical use data may indicate that a given voicecommand, while corresponding to multiple directives, historicallycorresponds to a first directive more frequently than a second directivewith respect to voice commands received via the user device 102.Additionally, or alternatively, data indicating that a given voicecommand, while corresponding to multiple directives, historicallycorresponds to a first directive more frequently than a second directivewith respect to voice commands received via the user device 102 and/orother devices may be used. The application may also provide anindication of which directives are to be prioritized more than otherdirectives. Additionally, or alternatively, data indicating the locationof objects with respect to each other as displayed on the user device102 may be utilized to rank directives. For example, directives toperform actions on objects that are displayed more prominently may beprioritized more than directives to perform actions on objects that aredisplayed less prominently. Additionally, or alternatively, certainintents may not be dependent on a specific object displayed on the userdevice 102 and therefore may be associated with a predetermineddirective. For example, a voice command of “scroll down” may correspondto an intent to display content that is not currently in view on theuser device 102 and may not correspond to an intent to perform an actionwith respect to an object displayed on the user device 102. Directivesto perform actions based on intents such as this that are not objectdependent may be prioritized over directives to perform actions that areobject dependent.

Additionally, or alternatively, data indicating previous voice commandsmay be utilized to rank directives. For example, a previous voicecommand may be “scroll down” and a subsequent voice command may be“more.” Without contextual data indicating the previous voice command,the command of “more” could correspond to directives to perform actionssuch as showing more videos, providing more information about a certainvideo, playing more of a video, etc. However, utilizing the previousvoice command of “scroll down,” the directives may be ranked such that adirective to perform an additional scroll down action is prioritizedover other directives. Additionally, or alternatively, data indicatingthat the screen data has changed or has otherwise been updated may beutilized to rank directives.

Additionally, or alternatively, a predetermined prioritization ofdirectives may be stored and utilized by the remote system 108. Forexample, directives to perform actions on objects associated with theapplication may be ranked based at least in part on the type of objectbeing acted on. For example, objects associated with both an image andtext may be prioritized over objects with just text, just an image,selectable text, and/or editable text. For example, a voice command of“play video” may be associated with directives to perform actions onvarious objects, such as an image representing a video with a play iconoverlaid thereon, text that reads “play,” a play icon, and/or aneditable field such as a search field to which the phrase “play video”may be inserted. In this example, the directive associated with theimage and overlaid play icon may be prioritized over the otherdirectives. Likewise, the play icon may be prioritized over the textthat reads “play.” Likewise, the text that reads “play” may beprioritized over the editable field. The ranking of directives may bebased at least in part on the intent determined by the NLU component148. For example, a determined intent of “play” may correspond to aranking as discussed above. Additionally, or alternatively, a determinedintent of “search for” may correspond to a ranking that prioritizesdirectives to perform actions on objects associated with editable fieldsover directives to perform actions on objects associated with selectionof objects. Additionally, or alternatively, a determined intent of“select” may correspond to a ranking that prioritizes directives toperform actions on objects that, when selected, cause the content to beupdated over directives to perform actions on other objects, such asinserting text into a search field. It should be understood that theexamples of directive ranking are provided herein for illustration, andother examples of ranking directives are included in this disclosure.

Once a directive is generated by the speechlet 150, the remote system108 may send, via the network 110, data representing the directive tothe user device 102 and/or the accessory devices 104(a)-(b). Thedirective handler 132 of the memory 120 may receive the directive andmay determine an action to be performed based at least in part on thedirective. For example, the directive may indicate that a “play” intentis to be performed on the object “cat video.” The directive handler 132,based at least in part on the intent from the directive, may determinethat the action of causing a video to be played on the user device 102is to be taken. The directive handler 132 may also determine that theaction of causing a video to be played is associated with a “cat video.”

The directive handler 132 may send data to the device event controller130 indicating the selected action to be performed along with the valueof “cat video” associated therewith. The device event controller 130 maythen determine which components of the user device 102 and/or accessorydevices 104(a)-(b) are to be utilized to perform the action determinedby the directive handler 132. The device event controller 130 may befurther configured to identify and/or determine when an event occursthat corresponds to displayed content changing and/or being updated.Examples of such an event may include initiating an application, a userinteraction with the content that causes the content to be updated, arefresh of the content, and/or time-dependent changes to the displayedcontent. The device event controller 130, based at least in part onidentifying and/or determining that an event has occurred, may cause thethird-party application interface component 138 to identify and/ordetermine updated content being displayed on the user device 102.

The node processing component 134 may receive data from the device eventcontroller 130 indicating the action to be performed and the objects onwhich the action is to be performed. The node processing component 134may identify node information stored by the third-party applicationstorage/access component 128 and/or as determined by the third-partyapplication interface component 138. The node processing component 134may attempt to match or substantially match the identified object fromthe directive to a node associated with the application. This processmay be performed using a keyword search, where the keyword(s) used inthe search may be words used to describe the object. For example, anobject may include or be associated with displayed text that reads “Bestcat video.” This phrase may be utilized in a keyword search ofsearchable text associated with nodes of the application. The node thatmatches or best matches the searched-for phrase may be selected as thenode on which the action is to be performed. Keeping with the exampleused herein, a node associated with a video with the description of“Best cat video on earth” may be determined to be the best match for“best cat video.” The action of causing the video to be played may beperformed on the selected node. The keyword processing component 136 maybe utilized to return a list of searchable words with stop words, suchas “and,” “of,” and/or “the” filtered out. This information may beutilized to match the keywords to the proper node.

In examples, the directive received from the remote system 108 may beassociated with more than one action. For example, a “select” intent maycorrespond to opening a hyperlink, causing a video to play, causingadditional information to be displayed, or other actions. The rankingcomponent 140 of the memory 120 may be configured to prioritize actionsbased at least in part on the intent from the directive and/orcontextual information associated with the application. For example,historical use data may indicate that a given intent, whilecorresponding to multiple actions, historically corresponds to a firstaction more frequently than a second action with respect to intentsreceived via the user device 102. Additionally, or alternatively, dataindicating that a given intent, while corresponding to multiple actions,historically corresponds to a first action more frequently than a secondaction with respect to voice commands received via the user device 102and/or other devices may be used. The application may also provide anindication of which actions are to be prioritized more than otheractions.

Additionally, or alternatively, data indicating the location of objectswith respect to each other as displayed on the user device 102 may beutilized to rank actions. For example, actions to be performed onobjects that are displayed more prominently may be prioritized more thanactions to be performed on objects that are displayed less prominently.Additionally, or alternatively, certain intents may not be dependent ona specific object displayed on the user device 102 and therefore may beassociated with a predetermined action. For example, a voice command of“scroll down” may correspond to an intent to display content that is notcurrently in view on the user device 102 and may not correspond to anintent to perform an action with respect to an object displayed on theuser device 102. Actions based on intents such as this that are notobject dependent may be prioritized over actions that are objectdependent.

Additionally, or alternatively, data indicating previous voice commandsmay be utilized to rank actions. For example, a previous voice commandmay be “scroll down” and a subsequent voice command may be “more.”Without contextual data indicating the previous voice command, thecommand of “more” could correspond to actions such as showing morevideos, providing more information about a certain video, playing moreof a video, etc. However, utilizing the previous voice command of“scroll down,” the actions may be ranked such that an action to performan additional scroll down is prioritized over other actions.Additionally, or alternatively, data indicating that the screen data haschanged or otherwise been updated may be utilized to rank actions.Additionally, or alternatively, a predetermined prioritization ofactions may be stored and utilized by the remote system 108. It shouldbe understood that the examples of action ranking are provided hereinfor illustration, and other examples of ranking actions are included inthis disclosure.

The overlay component 142 may be configured to provide one or more“hints” to assist a user with providing a voice command and/ordetermining an intent from the voice command with more accuracy. Forexample, utilizing the screen data indicating the objects displayed onthe screen, overlay content may be generated that provides numbersand/or letters, for example, associated with the displayed objects. Asdescribed herein, the overlay content may be described as including“hints” for user interaction with the system. The user, seeing theoverlay content, may then provide a voice command that instructs thesystem to perform an action on a selected number and/or letter. Forexample, the user may provide the voice command of “select number 1.” Byso doing, a confidence at which the system determines which action toperform from the voice command may be increased. Additionally, oralternatively, in examples where multiple objects displayed on the userdevice correspond to the same or similar actions, the system mayidentify the relationship between the objects and may generate amodified hint, which may simplify user interaction with the system.

FIG. 2 illustrates a conceptual diagram of components of a user device202 and a remote system 204 involved in controlling computing devicesvia audible input. The components of the user device 202 and the remotesystem 204 are described with respect to FIG. 2 along with an exampleflow of how each component may interact with each other and howinformation may be identified, determined, generated, sent, and/orreceived by each component of the system.

For example, a third-party application 206 may be stored in memory ofthe user device 202 and/or may be accessed by the user device 202. Thethird-party application 206 may include an identifier of the application206 along with data representing the content associated with theapplication 206. The content may be described in terms of nodes of a DOMtree, which may be utilized to perform actions on the content. Asdescribed herein, objects may be displayed on the user device 202. Theobjects may correspond to one or more nodes of the DOM tree of theapplication 206.

The third-party application interface component 208 may receive the datadescribed above from the third-party application 206 and/or one or moredatabases storing this data. For example, the third-party applicationinterface component 208 may be configured to receive data indicating theidentity of the application 206 corresponding to the content beingdisplayed on the user device 202. The third-party application interfacecomponent 208 may be further configured to receive screen dataassociated with the content displayed on the user device 202. The dataindicating the identity of the application 206 may be sent, via anetwork, to the remote system 204. Additionally, the screen data may besent, via the network, to the remote system 204. The screen data mayinclude DOM information associated with the content. The DOM informationmay include identification of one or more objects corresponding to thedisplayed content and/or one or more relationships between the objects.

The DOM may be an application programming interface (API) thatrepresents hypertext markup language (HTML), extensible markup language(XML), and/or other computing languages in a tree structure where eachnode of the tree represents an object representing part of theapplication. When an object is acted upon in the tree, correspondingchanges may be reflected in the display of content of the application.One or more libraries associated with the API may be provided to allowone or more actions to be taken with respect to the nodes in the DOMtree. Additionally, or alternatively, the context data may be describedas and/or be associated with metadata associated with the application.The metadata may provide an indication as to which portions of thecontent, and/or renderings of the portions of the content, correspond toselectable objects. For example, the metadata may indicate that acertain portion of the content is associated with a link that, whenselected by a user, causes the content displayed by the device to beupdated. Syntax associated with portions of the content may indicatethat selection of the portion of the content results in the fetching ofdata, querying of a database, receipt of content, and/or other actionsthat, when executed, would cause the content displayed by the device tobe updated. For example, a portion of the content corresponding to“movies” in a video-playing application may be associated with metadataand/or other contextual information that may indicate that a selectionof a rendering of the “movies” portion of the content results in theapplication fetching data indicating movies available to watch using theapplication and displaying indicators of the various movies. Given thatthe “movies” portion of the content corresponds to a selectable portionof the content, this portion of the content may be identified as anobject on which a user may interact via user utterances.

Based at least in part on receiving the data indicating that contentassociated with a third-party application 206 is displayed on the userdevice 202, a third-party application registry of the remote system 204may determine whether the third-party application 206 is registered orotherwise authorized to provide voice control of the content displayedon the user device 202. For example, when a third-party applicationdeveloper publishes an application for sale or consumption on anapplication store, the developer may be queried by the application storeto determine whether the developer would like to voice enable theapplication. If the developer indicates that voice enablement isauthorized, an indication of the application may be stored in thethird-party application registry. Thereafter, when data indicating thatcontent of the application is being displayed on a device, audio datacorresponding to voice commands may be processed to voice enable theapplication.

The context data identified, determined, and/or generated by thethird-party application interface component 208 may be sent to theremote system 204 and may be stored, for example, in a data storedatabase 210. This context data may be utilized by the remote system 204as described more fully below.

The user device 202 may have one or more microphones 212 that may beconfigured to capture audio from the environment in which the userdevice 202 is disposed. As described herein, an example of audio fromthe environment may be a human utterance, such as a voice command tointeract with content displayed by the user device 202. Additionally, oralternatively, an accessory device, such as the accessory devices104(a)-(b) from FIG. 1 may include the microphones 212. The microphones212 may generate audio data corresponding to the audio. The user device202 may send the audio data, or a portion thereof, to the remote system204.

The automatic speech recognition (ASR) component 214 of the remotesystem 204 may receive the audio data and may perform ASR thereon togenerate text data. Performing ASR on the audio data is described morefully below with respect to FIG. 12. The text data may be utilized bythe natural language understanding (NLU) component 216 to determine oneor more intents associated with the voice command. Again, performing NLUon the text data is described more fully below with respect to FIG. 12.The NLU component 216, as part of determining the intent associated withthe voice command, may perform named entity recognition in connectionwith the natural language understanding to identify portions of the textdata that correspond to a named entity that may be recognizable by theremote system 204. The process may link a text portion to a specificentity known to the remote system 204. As shown in FIG. 2, the entityrecognition component 218 is shown as a separate component from the NLUcomponent 216. However, it should be understood that the entityrecognition component 218 may be a component of the NLU component 216.

To perform named entity recognition, the entity recognition component218 may utilize the screen data provided by the third-party applicationinterface component 208 of the user device 202. The screen data may beused for entity recognition, for example, by matching results of the ASRcomponent 214 with different entities associated with the application206, such as objects displayed on the user device 202. In this way, thedata source database 210 may be populated with some or all of the screendata provided by the user device 202 to assist in named entityrecognition. The NLU component 218 may be trained or otherwiseconfigured to select an intent based on the screen data that iscurrently being displayed on the user device 202. Additionally, the NLUcomponent 218 may determine a value for one or more slots associatedwith the intent based on the screen data.

The intent determined by the NLU component 216, with, in examples,assistance from the entity recognition component 218, may be sent to aspeechlet 220 configured to generate directives to perform actions withrespect to the third-party application 206. Based at least in part on anindication that the application 206 has been authorized for voiceenablement utilizing the system described herein, the intent andassociated value(s) may be sent to the speechlet 220 configured togenerate directive data for the third-party application 206. Thespeechlet 220 may generate the directive data for the user device 202 toperform based at least in part on the information received from the NLUcomponent 216 and/or the entity recognition component 218. Some or allof the screen data associated with the displayed content may be providedby the third-party application interface component 208. The screen datamay be utilized to generate directive data for the user device 202and/or one or more the accessory devices to be performed thateffectuates the intent determined by the NLU component 216.

Once directive data is generated by the speechlet 220, the remote system204 may send, via the network, the directive data to the user device202. The directive handler 222 of the user device 202 may receive thedirective data and may determine an action to be performed based atleast in part on the directive data. For example, the directive data mayindicate that a “play” intent is to be performed on the object “catvideo.” The directive handler 222, based at least in part on the intentfrom the directive data, may determine that the action of causing avideo to be played on the user device 202 is to be taken. The directivehandler 222 may also determine that the action of causing a video to beplayed is associated with a “cat video.”

The directive handler 222 may send data to a device event controller 224indicating the selected action to be performed along with the value of“cat video” associated therewith. The device event controller 224 maythen determine which components of the user device 202 are to beutilized to perform the action determined by the directive handler 222.The device event controller 224 may be further configured to identifyand/or determine when an event occurs that corresponds to displayedcontent changing and/or being updated. Examples of such an event mayinclude initiating an application, a user interaction with the contentthat causes the content to be updated, a refresh of the content, and/ortime-dependent changes to the displayed content. The device eventcontroller 224, based at least in part on identifying and/or determiningthat an event has occurred, may cause the third-party applicationinterface component 208 to identify and/or determine updated contentbeing displayed on the user device 202.

The node processing component 226 may receive data from the device eventcontroller 224 indicating the action to be performed and the objects onwhich the action is to be performed. The node processing component 226may identify stored node information, which may be determined by thethird-party application interface component 208. The node processingcomponent 226 may attempt to match or substantially match the identifiedobject from the directive to a node associated with the application 206.This process may be performed using a keyword search, where thekeyword(s) used in the search may be words used to describe the object.For example, an object may include or be associated with displayed textthat reads “Best cat video.” This phrase may be utilized in a keywordsearch of searching text associated with nodes of the application 206.The node that matches or best matches the searched-for phrase may beselected as the node on which the action is to be performed. Keepingwith the example used herein, a node associated with a video with thedescription of “Best cat video on earth” may be determined to be thebest match for “best cat video.” The action of causing the video to beplayed may be performed on the selected node. A keyword processingcomponent 228 may be utilized to return a list of searchable words withstop words, such as “and,” “of,” and/or “the” filtered out. Thisinformation may be utilized to match the keywords to the proper node.

The overlay component 230 may be configured to provide one or more“hints” to assist a user with providing a voice command and/ordetermining an intent from the voice command with more accuracy. Forexample, utilizing the screen data indicating the objects displayed onthe screen, overlay content may be generated that provides numbersand/or letters, for example, associated with the displayed objects.Information associated with the hints, also described as tips, may bestored in a nodes-and-tips database 232. Associations between hints,hint identifiers, and associations between nodes and hints may also bestored in the nodes-and-tips database 232. The information stored in thenodes-and-tips database 232 may be utilized by the overlay component 230to generate the overlay content. The user, seeing the overlay content,may then provide a voice command that instructs the system to perform anaction on a selected number and/or letter. For example, the user mayprovide the voice command of “select number 1.” By so doing, aconfidence at which the system determines which action to perform fromthe voice command may be increased. Additionally, or alternatively, inexamples where multiple objects displayed on the user device correspondto the same or similar actions, the system may identify the relationshipbetween the objects and may generate a modified hint, which may simplifyuser interaction with the system.

The node processing component 226 may send data indicating the action tobe performed and the node(s) on which the action is to be performed tothe third-party application interface component 208. The third-partyapplication interface component 208 may send data to the third-partyapplication 206 and/or to other components of the user device 202 tocause the action to be performed on the node(s).

FIG. 3 illustrates a flow diagram of an example process 300 forcontrolling computing devices via audible input. The operations of theprocess 300 are described with respect to the user device and/or theremote system, as illustrated by FIG. 3. The order in which theoperations or steps are described is not intended to be construed as alimitation, and any number of the described operations may be combinedin any order and/or in parallel to implement process 300.

At block 302, the process 300 may include capturing audio from anenvironment in which the user device is disposed and generatingcorresponding audio data. For example, the audio may include a voicecommand from a user in the environment. As shown in FIG. 3, the voicecommand is “Alexa, open video app.” Audio corresponding to this voicecommand may be captured by one or more microphones of the user deviceand/or an accessory device, and the corresponding audio data may begenerated and sent to the remote system.

At block 304, the process 300 may include performing automatic speechrecognition (ASR) on the audio data to generate corresponding text data.Natural language understanding (NLU) techniques may be performed on thetext data to determine an intent associated with the voice command. ASRand NLU techniques are described in more detail below with respect toFIG. 12. In the example using in FIG. 3, the voice command “Alexa, openvideo app” may correspond to an “open application” intent, and the valueindicating which application to open may correspond to “video.” Based atleast in part on determining that the voice command corresponds to theintent to open the video application, at block 306, the process 300 mayinclude generating directive data to open the application. The directivedata may be sent to the user device and/or an accessory device, whichmay, at block 308, open the video application based at least in part onreceiving data corresponding to the directive from the remote system.

At block 310, the process 300 may include determining that contentassociated with the application is currently being displayed on adisplay associated with the user device. It should be understood thatthe operations described with respect to block 310 may be performedirrespective of whether the operations described with respect to blocks302-308 are performed. For example, a user may provide a tactile inputthat may cause an application to open or otherwise initiate. Determiningthat the application is currently being displayed may include receivingdata from the application and/or another system on which the applicationis stored indicating that the application is being utilized.Additionally, or alternatively, an event handler may receive anindication that an event corresponding to opening the application hasoccurred.

Based at least in part on determining that content of the application iscurrently being displayed, at block 312, the process may includedetermining whether the application is registered to be voice enabled.For example, when a third-party application developer publishes anapplication for sale or consumption on an application store, thedeveloper may be queried by the application store to determine whetherthe developer would like to voice enable the application. If thedeveloper indicates that voice enablement is authorized, an indicationof the application may be stored in a registry. Thereafter, when dataindicating that content of the application is being displayed on adevice, audio data corresponding to voice commands may be processed tovoice enable the application. If the application is not registered, thenat block 314, the process 300 may include not performing operations tovoice enable the application.

If the application is registered, then at block 316, the process 300 mayinclude determining screen data associated with the displayed content.The screen data may include document object model (DOM) informationassociated with the content of the application. The DOM information mayinclude identification of one or more objects corresponding to thedisplayed content and/or one or more relationships between the objects.The DOM may be an application programming interface (API) thatrepresents hypertext markup language (HTML), extensible markup language(XML), and/or other computing languages in a tree structure where eachnode of the tree represents an object representing part of theapplication content. When an object is acted upon in the tree,corresponding changes may be reflected in the display of content of theapplication. One or more libraries associated with the API may beprovided to allow one or more actions to be taken with respect to thenodes in the DOM tree. At block 318, the process 300 may includereceiving data corresponding to the screen data at the remote system.The screen data may be utilized by the remote system in operationsdescribed in more detail below.

At block 320, the process may include capturing audio from theenvironment in which the user device is disposed and generatingcorresponding audio data. For example, the audio may include a voicecommand from a user to interact with displayed content. As shown in FIG.3, the voice command is “Alexa, search for dog videos.” Audiocorresponding to this voice command may be captured by one or moremicrophones of the user device and/or an accessory device, and thecorresponding audio data may be generated and sent to the remote system.

At block 322, the process 300 may include performing ASR on the audiodata to generate corresponding text data. NLU techniques may beperformed at block 324 on the text data to determine an intentassociated with the voice command. ASR and NLU techniques are describedin more detail below with respect to FIG. 12. In the example using inFIG. 3, the voice command “Alexa, search for dog videos” may correspondto a “search” intent, and the value indicating which content is to besearched for may correspond to “dog videos.” As part of determining theintent associated with the voice command, named entity recognition maybe performed at block 326 in connection with the natural languageunderstanding to identify portions of the text data that correspond to anamed entity that may be recognizable by the remote system. The processmay link a text portion to a specific entity known to the remote system.As shown in FIG. 3, performing the entity recognition is shown as aseparate operation from the NLU operations described at block 324.However, it should be understood that the entity recognition may beperformed as part of the NLU operations described at block 324.

To perform named entity recognition, the screen data determined at block316 may be utilized. The screen data may be used for entity recognition,for example, by matching results of the ASR operations with differententities associated with the application, such as objects displayed onthe user device. In this way, a data source database may be populatedwith some or all of the screen data provided by the user device toassist in named entity recognition. The NLU component of the remotesystem may be trained or otherwise configured to select an intent basedon the screen data corresponding to content that is currently beingdisplayed on the user device. Additionally, the NLU component maydetermine a value for one or more slots associated with the intent basedon the screen data.

The intent determined by the NLU component, with, in examples,assistance from the entity recognition operations, may be sent to aspeechlet configured to generate directives to perform actions withrespect to the third-party application. The speechlet may generate thedirective data at block 328 for the user device to perform based atleast in part on the intent determined at blocks 324 and 326. The screendata may be utilized to generate directive data for the user deviceand/or one or more the accessory devices to be performed thateffectuates the determined intent.

Once directive data is generated by the speechlet, the remote system maysend, via the network, data representing the directive to the userdevice. A directive handler of the user device may receive the directiveand may determine an action to be performed based at least in part onthe directive. The directive handler may send data to a device eventcontroller indicating the selected action to be performed along withinformation about the object on which to perform the action. The deviceevent controller may then determine which components of the user deviceare to be utilized to perform the action determined by the directivehandler. The device event controller may be further configured toidentify and/or determine when an event occurs that corresponds todisplayed content changing and/or being updated. Examples of such anevent may include initiating an application, a user interaction with thecontent that causes the content to be updated, a refresh of the content,and/or time-dependent changes to the displayed content.

A node processing component of the user device may receive data from thedevice event controller indicating the action to be performed and theobjects on which the action is to be performed. The node processingcomponent may identify stored node information. The node processingcomponent may attempt to match or substantially match the identifiedobject from the directive to a node associated with the application.This process may be performed using a keyword search, where thekeyword(s) used in the search may be words used to describe the object.The node that matches or best matches the searched-for phrase may beselected as the node on which the action is to be performed. A keywordprocessing component of the user device may be utilized to return a listof searchable words with stop words, such as “and,” “of,” and/or “the”filtered out. This information may be utilized to match the keywords tothe proper node. Having determined the node on which to perform anaction and having determined the action to be performed, at block 330,the action may be performed on the node of the application.

FIG. 4 illustrates an example user interface 400 utilized forcontrolling computing devices via audible input. The user interface 400may be displayed on a device, such as a user device 102 from FIG. 1. Theuser interface 400 may display content associated with an application,such as a third-party application. In the example provided with respectto FIG. 4, the third-party application is a video-playing application.It should be understood that while the example given with respect toFIG. 4 is a video-playing application, other applications that includeobjects that may be displayed on a device are included in thisdisclosure.

The user interface 400 may include one or more objects. The objects maybe categorized into object types, such as text objects 402, imageobjects 404, and text-input objects 406. As described above, a user mayinteract with the various objects by audible input means. For example, auser may provide a voice command to open the video-playing application.The user may then provide subsequent voice commands to interact with thecontent displayed on the user device. Those voice commands may be, forexample, “select movies,” “play Video C,” “search for dog videos,” etc.Audio data corresponding to the voice commands may be processed asdescribed above by a remote system to determine an intent associatedwith the voice commands. Directives to perform actions may be sent tothe user device and/or an accessory device, which may utilize thedirectives to perform actions on nodes that correspond to the displayedobjects. By way of example, a voice command to “select movies” mayresult in the “movies” object being selected as if the user had provideda tactile input of selecting the “movies” object displayed on the userdevice. By way of further example, a voice command to “play Video C” mayresult in the “Video C” text object 402 being selected, and/or the playicon overlaid on the image associated with “Video C” being selected,and/or the image associated with “Video C” being selected as if the userhad provided a tactile input of selecting “Video C,” the play icon, orthe image displayed on the user device. By way of further example, avoice command to “search for dog videos” may result in the text-inputobject 406 being selected and the text “dog videos” being entered intothe text-input field as if the user had provided a tactile input ofselecting the text-input field and typed or otherwise input “dog videos”into the field.

Performing one or more of the actions on one or more of the objectsdescribed with respect to FIG. 4 may result in additional and/ordifferent content being displayed on the user device. For example,selection of the “movies” object may result in a change in the imagesdisplayed on other portions of the user interface 400 such that imagescorresponding to videos identified as being in the category of “movies”are displayed. The text objects 402 corresponding to descriptions of thevideos may also be updated to the descriptions that correspond to thenewly-displayed images. By way of further example, selection of a playicon may result in the video corresponding to the play icon beinginitiated and displayed on the user interface 400. As the displayedcontent is updated when the user interacts with the user interface 400,events corresponding to the interactions may be identified and utilizedto update a determination of the screen data being displayed. Theupdated screen data may be utilized by the remote system to moreaccurately determine intents associated with voice commands to interactwith the displayed content, for example.

In examples, the user device and/or the remote system may be configuredto rank directives to perform actions on the displayed content inexamples where a determined intent corresponds to more than one actionto be performed on a given object. For example, a voice command mayrepresent an intent that may be determined to correspond to more thanone action and/or that may correspond to an action that may be performedwith respect to multiple objects. In these examples, the directives maybe ranked such that an ambiguous voice command may result in ahighest-ranked directive being sent to the user device and utilized toperform a given action. Ranking of directives may be based at least inpart on historical use data, the application associated with thedisplayed content, the location of objects with respect to each other asdisplayed on the user device, categorization of intents, previous voicecommands, and/or screen data updating, for example.

For example, historical use data may indicate that a given voicecommand, while corresponding to multiple directives, historicallycorresponds to a first directive more frequently than a second directivewith respect to voice commands received via the user device.Additionally, or alternatively, data indicating that a given voicecommand, while corresponding to multiple directives, historicallycorresponds to a first directive more frequently than a second directivewith respect to voice commands received via the user device and/or otherdevices may be utilized to rank the directives. The application may alsoprovide an indication of which directives are to be prioritized morethan other directives. Additionally, or alternatively, data indicatingthe location of objects with respect to each other as displayed on theuser device may be utilized to rank directives. For example, directivesto perform actions on objects that are displayed more prominently may beprioritized more than directives to perform actions on objects that aredisplayed less prominently. Additionally, or alternatively, certainintents may not be dependent on a specific object displayed on the userdevice and therefore may be associated with a predetermined directive.For example, a voice command of “scroll down” may correspond to anintent to display content that is not currently in view on the userdevice and may not correspond to an intent to perform an action withrespect to an object displayed on the user device. Directives to performactions based on intents that are not object dependent may beprioritized over directives to perform actions that are objectdependent.

Additionally, or alternatively, data indicating previous voice commandsmay be utilized to rank directives. For example, a previous voicecommand may be “scroll down” and a subsequent voice command may be“more.” Without contextual data indicating the previous voice command,the command of “more” could correspond to directives to perform actionssuch as showing more videos, providing more information about a certainvideo, playing more of a video, etc. However, utilizing the previousvoice command of “scroll down,” the directives may be ranked such that adirective to perform an additional scroll down action is prioritizedover other directives. Additionally, or alternatively, data indicatingthat the screen data has changed or has otherwise been updated may beutilized to rank directives. Additionally, or alternatively, apredetermined prioritization of directives may be stored and utilized bythe remote system.

For example, directives to perform actions on objects associated withthe application may be ranked based at least in part on the type ofobject being acted on. For example, objects associated with both animage object 404 and a text object 402 may be prioritized over just textobjects 402, just image objects 404, and/or text-input objects 406. Forexample, a voice command of “play video” may be associated withdirectives to perform actions on various objects, such as an imagerepresenting a video with a play icon 404 overlaid thereon, text objects402 that read “play,” an image object 404 including a play icon, and/ora text-input object 406 such as a search field to which the phrase “playvideo” may be inserted. In this example, the directive associated withthe image and overlaid play icon may be prioritized over the otherdirectives. Likewise, the play icon may be prioritized over the textthat reads “play.” Likewise, the text that reads “play” may beprioritized over the editable field.

Additionally, or alternatively, the ranking of directives may be basedat least in part on the intent determined by the remote system tocorrespond to the voice command. For example, a determined intent of“play” may correspond to a ranking as discussed above. Additionally, oralternatively, a determined intent of “search for” may correspond to aranking that prioritizes directives to perform actions on objectsassociated with text-input objects 406 over directives to performactions on objects associated with selection of objects. Additionally,or alternatively, a determined intent of “select” may correspond to aranking that prioritizes directives to perform actions on objects that,when selected, cause the content to be updated over directives toperform actions on other objects, such as inserting text into a searchfield. It should be understood that the examples of directive rankingare provided herein for illustration, and other examples of rankingdirectives are included in this disclosure. Other, non-limiting examplesof intents may include “scroll,” “move,” “swipe,” “page,” “go back,”“back,” “go forward,” “forward,” “previous,” “next,” “resume,” “pause,”“stop,” “rewind,” and “fast forward.”

In addition to, or instead of, ranking of directives generated by theremote system may be performed as described above, the directivereceived from the remote system may be associated with more than oneaction. For example, a “select” intent may correspond to opening ahyperlink, causing a video to play, causing additional information to bedisplayed, or other actions. The user device and/or an accessory devicemay be configured to prioritize actions corresponding to the directivebased at least in part on the intent from the directive and/orcontextual information associated with the application. The ranking ofactions may be performed in the same or a similar manner as the rankingof directives as described with respect to FIG. 4.

FIG. 5 illustrates another example user interface 500 utilized forcontrolling computing devices via audible input. The user interface 500may be displayed on a device, such as a user device 102 from FIG. 1. Theuser interface 500 may display content associated with an application,such as a third-party application. In the example provided with respectto FIG. 5, the third-party application is a video-playing application.It should be understood that while the example given with respect toFIG. 5 is a video-playing application, other applications that includeobjects that may be displayed on a device are included in thisdisclosure.

The user interface 500 may include one or more objects, which mayinclude the same or similar objects as those described with respect toFIG. 4, above. As described with respect to FIG. 4, a user may provide avoice command to interact with the displayed content. Examples providedwith respect to FIG. 4 included “select movies,” “play Video C,” and“search for dog videos.” These voice commands are based at least in parton a user's perception of the objects rendered by the user device. Inexamples, a user may desire or require assistance in providing voicecommands that result in the desired action being performed on thedesired object.

In these examples, the user device, an accessory device, and/or theremote system may be configured to provide one or more “hints” to assista user with providing a voice command and/or determining an intent fromthe voice command with more accuracy. For example, utilizing the screendata indicating the objects displayed on the screen, overlay content maybe generated that provides numbers and/or letters, for example,associated with the displayed objects. The user, seeing the overlaycontent, may then provide a voice command that instructs the system toperform an action on a selected number and/or letter. For example, asshown in FIG. 5, the overlay content may include one or more renderingsof hints 502(a)-(e). As used in this example, a hints 502(a)-(e) may bedisplayed as overlay content on one or more of the selectable objectsbeing displayed on the user interface 500.

Here, a first hint 502(a) may correspond to a text-input field, a secondhint 502(b) may correspond to selection of the “Home” object, a thirdhint 502(c) may correspond to selection of the play icon associated with“Video A,” a fourth hint 502(d) may correspond to selection of a textobject associated with “Video A,” and/or a fifth hint 502(e) maycorrespond to selection of an image associated with “Video B.” Inexamples, a number may be provided for each object displayed on the userinterface 500. In other examples, only a portion of the objects mayinclude an overlaid number. For example, a determination may be madethat multiple objects, when selected, are associated with the sameaction. In these examples, one overlaid number may be displayed for themultiple objects. To illustrate using FIG. 5, the text object “Video B,”the image associated with that text object, and the play icon overlaidon the image may all, when selected, cause “Video B” to be initiated anddisplayed on the user interface 500. In this example, instead ofproviding a number for each of the text object, the image, and the playicon, a single hint 502(e) may be overlaid on an area of the userinterface 500 common to the multiple objects.

The user may provide then provide a voice command that corresponds toselection of one of the hints 502(a)-(e). For example, the user mayprovide a voice command of “select number 2,” “select 2,” “2,” “selectthe second one,” and/or so forth. The remote system may be provided withdata indicating that hints are being provided to the user, along withdata indicating which hints are associated with which objects. By sodoing, audio data corresponding to the voice command may be processed bythe remote system to more easily and/or accurately determine that thevoice command corresponds to an intent to select one of the hintsprovided on the user interface 500 and to identify the hint selected bythe user. The remote system may correlate the selected hint with theobject corresponding to the hint and may provide a directive to performan action on the object, as described more fully above. As a userinteracts with the displayed content, such as through selecting hints,the content may change and/or be updated. The updated content may beutilized to determine updated screen data, which may be utilized togenerate updated overlay content with updated hints to be utilized bythe user. The updated data may be sent to the remote system to assist indetermining intents and generating directives for subsequent voicecommands.

As shown in FIG. 5, the hints are described as numbers. However, itshould be understood that the hints 502(a)-(e) are provided by way ofexample and not as a limitation. Other hint identifiers may be utilized,such as letters, symbols, sounds, shapes, and/or colors, for example.The hints are also shown with respect to FIG. 5 as having one shape,namely circular. However, it should be understood that the hints may beany shape. Additionally, or alternatively, the size of the hint may bestatic or dynamic. For example, the size of hints may be consistent withrespect to particular overlay content. Alternatively, the size of thehints may vary. For example, a size of a rendered object may bedetermined and that information may be utilized to generate a hinthaving a size that is similar to the rendered object. As shown in FIG.5, for example, the hints 502(b) is larger than the hints 504(d). Thissize difference may be based at least in part on the differing sizes ofobject renderings to which the hints correspond. Additionally, oralternatively, the renderings of the hints may have a translucence ortransparency, which may allow a user to view some or all of the objecton which the hint overlay is applied to the user interface 500.

FIGS. 6-11 illustrate various processes for voice control of computingdevices. The processes described herein are illustrated as collectionsof blocks in logical flow diagrams, which represent a sequence ofoperations, some or all of which may be implemented in hardware,software or a combination thereof. In the context of software, theblocks may represent computer-executable instructions stored on one ormore computer-readable media that, when executed by one or moreprocessors, program the processors to perform the recited operations.Generally, computer-executable instructions include routines, programs,objects, components, data structures and the like that performparticular functions or implement particular data types. The order inwhich the blocks are described should not be construed as a limitation,unless specifically noted. Any number of the described blocks may becombined in any order and/or in parallel to implement the process, oralternative processes, and not all of the blocks need be executed. Fordiscussion purposes, the processes are described with reference to theenvironments, architectures and systems described in the examplesherein, such as, for example those described with respect to FIGS. 1-5and 12, although the processes may be implemented in a wide variety ofother environments, architectures and systems.

FIG. 6 illustrates a flow diagram of an example process 600 forcontrolling computing devices via audible input. The order in which theoperations or steps are described is not intended to be construed as alimitation, and any number of the described operations may be combinedin any order and/or in parallel to implement process 600.

At block 602, process 600 may include determining that content of anapplication is being displayed on a device. The application may bewithout instructions for utilizing voice commands to interact with thedisplayed content. For example, the application may be a third-partyapplication that has not enabled voice interactions with the content ofthe application. The third-party application may include an identifierof the application along with data representing the content associatedwith the application. The content may be described as nodes of a DOMtree, which may be utilized to perform actions on the content. Asdescribed herein, objects may be displayed on the user device. Theobjects may correspond to one or more nodes of the DOM tree of theapplication. Determining that content of the application is currentlybeing displayed may include receiving data from the application and/oranother system on which the application is stored indicating that theapplication is being utilized. Additionally, or alternatively, an eventhandler may receive an indication that an event corresponding to openingthe application has occurred.

At block 604, the process 600 may include causing an applicationinterface component to identify metadata associated with the content,which may be based at least in part on determining that the content isbeing displayed. The application interface component may be configuredto identify content being displayed. The application interface componentmay be a component of the device or another device in communication withthe first device. The application interface component may receive datafrom the application, such as via one or more APIs, that may indicatethe content that is being displayed on the display.

At block 606, the process 600 may include identifying, via theapplication interface and from the metadata, a portion of the contentthat, when displayed and selected by a user, causes updated content tobe displayed. The portion of the content may correspond to an object orselectable object that is selectable by a user and/or a node of adocument object model associated with the application. Identifyingselectable objects may be based at least in part on determining screendata associated with the displayed content. The screen data may includedocument object model (DOM) information associated with the content ofthe application. The DOM information may include identification of oneor more objects corresponding to the displayed content and/or one ormore relationships between the objects. The DOM may be an applicationprogramming interface (API) that represents hypertext markup language(HTML), extensible markup language (XML), and/or other computinglanguages in a tree structure where each node of the tree represents anobject representing part of the application content. When an object isacted upon in the tree, corresponding changes may be reflected in thedisplay of content of the application. One or more libraries associatedwith the API may be provided to allow one or more actions to be takenwith respect to the nodes in the DOM tree.

At block 608, the process 600 may include sending, to the remote system,screen data identifying the portion of the content. The screen data maybe sent to the remote system via the network and network interfacesdescribed herein. Data indicating one or more relationships betweenobjects may additionally be sent to the remote system.

At block 610, the process 600 may include receiving audio datarepresenting a user utterance. Receiving the audio data may includecapturing audio, via one or more microphones, from an environment inwhich the device is disposed and generating corresponding audio data.For example, the audio may include an utterance from a user in theenvironment. Audio corresponding to this user utterance may be capturedby one or more microphones of the user device and/or an accessorydevice, and the corresponding audio data may be generated.

At block 612, the process 600 may include sending the audio data to theremote system. The audio data may be sent to the remote system via thenetworks and the network interfaces described herein. One or moreinstructions and/or data may be sent to the remote system along with theaudio data to associate the audio data with the device, a relatedaccessory device, a user profile associated with the device, a useraccount associated with the device, and/or the screen data sent to theremote system.

At block 614, the process 600 may include receiving, from the remotesystem, directive data to perform an action with respect to the portionof the content. The directive data may be determined by the remotesystem from the screen data and the audio data. For example, the remotesystem may perform automatic speech recognition (ASR) on the audio datato generate corresponding text data. Natural language understanding(NLU) techniques may be performed on the text data to determine anintent associated with the utterance. ASR and NLU techniques aredescribed in more detail below with respect to FIG. 12. As part ofdetermining the intent associated with the utterance, named entityrecognition may be performed in connection with the natural languageunderstanding to identify portions of the text data that correspond to anamed entity that may be recognizable by the remote system. The processmay link a text portion to a specific entity known to the remote system.

To perform named entity recognition, the screen data may be utilized.The screen data may be used for entity recognition, for example, bymatching results of the ASR operations with different entitiesassociated with the application, such as objects displayed on the userdevice. In this way, a data source database may be populated with someor all of the screen data provided by the user device to assist in namedentity recognition. In this way, the NLU component of the remote systemmay be trained or otherwise configured to select an intent based on thescreen data corresponding to content that is currently being displayedon the user device. Additionally, the NLU component may determine avalue for one or more slots associated with the intent based on thescreen data.

The intent determined by the NLU component, with, in examples,assistance from the entity recognition operations, may be sent to aspeechlet configured to generate directive data to perform actions withrespect to the third-party application. The speechlet may generate thedirective data for the device to perform based at least in part on theintent determined by the remote system. The screen data may be utilizedto generate directive data for the device and/or one or more theaccessory devices to be performed that effectuates the determinedintent. Based at least in part on determining that the utterancecorresponds to a given intent, directive data corresponding to theintent, along with an indication of the object(s) on which to performthe intended action, the directive data may be generated and sent to thedevice.

At block 616, the process 600 may include causing the action to beperformed. A directive handler of the device may receive the directivedata and may determine an action to be performed based at least in parton the directive data. The directive handler may send data to a deviceevent controller indicating the selected action to be performed alongwith information about the object on which to perform the action. Thedevice event controller may then determine which components of thedevice are to be utilized to perform the action determined by thedirective handler. The device event controller may be further configuredto identify and/or determine when an event occurs that corresponds todisplayed content changing and/or being updated. Examples of such anevent may include initiating an application, a user interaction with thecontent that causes the content to be updated, a refresh of the content,and/or time-dependent changes to the displayed content.

A node processing component of the device may receive data from thedevice event controller indicating the action to be performed and theobjects on which the action is to be performed. The node processingcomponent may identify stored node information. The node processingcomponent may attempt to match or substantially match the identifiedobject from the directive to a node associated with the application.This process may be performed using a keyword search, where thekeyword(s) used in the search may be words used to describe the object.The node that matches or best matches the searched-for phrase may beselected as the node on which the action is to be performed. A keywordprocessing component of the user device may be utilized to return a listof searchable words with stop words, such as “and,” “of,” and/or “the”filtered out. This information may be utilized to match the keywords tothe proper node. Having determined the node on which to perform anaction and having determined the action to be performed, the action maybe performed on the node of the application.

The process 600 may additionally include receiving event data indicatingthat an event has occurred with respect to the content. The process 600may additionally include determining that the event corresponds at leastin part to second content being displayed on the display. Based at leastin part on determining that the second content is being displayed, asecond portion of the second content may be identified. The process 600may include sending, to the remote system, second screen dataidentifying the second portion. The second portion may differ from thefirst portion. In this way, the screen data identified, determined,and/or sent to the remote system may be updated as the displayed contentis updated. The updated screen data may be utilized by the remote systemto inform natural language understanding of subsequent voice commandsand generation of subsequent directives to be performed by the device.Determining that at least a portion of the user interface displayed onthe device has changed may be based at least in part on a determinationthat an event has occurred with respect to the content displayed on thedevice. For example, the event may include opening of an application,interaction by the user with the content, refreshing of content, and/ortime-dependent changes to the displayed content. The device eventcontroller of the device, based at least in part on identifying and/ordetermining that an event has occurred, may cause a third-partyapplication interface component of the device to identify and/ordetermine updated content being displayed on the device.

The process 600 may additionally, or alternatively, include causingdisplay of overlay content on the user interface. The overlay contentmay include an identifier proximate to the selectable object. Theprocess 600 may also include sending, to the remote system, second dataassociating the identifier with the selectable object. The second datamay be utilized by the remote system to generate the directive and/or todetermine an intent associated with the voice command. For example, theuser device, an accessory device, and/or the remote system may beconfigured to provide one or more “hints” to assist a user withproviding a voice command and/or determining an intent from the voicecommand with more accuracy. For example, utilizing the screen dataindicating the objects displayed on the screen, overlay content may begenerated that provides numbers and/or letters, for example, associatedwith the displayed objects. The user, seeing the overlay content, maythen provide a voice command that instructs the system to perform anaction on a selected number and/or letter. For example, the overlaycontent may include one or more rendering of numbers. As used in thisexample, a number may be displayed as overlay content on one or more ofthe selectable objects being displayed on the user interface.

In examples, a number may be provided for each object displayed on theuser interface. In other examples, only a portion of the objects mayinclude an overlaid number. For example, a determination may be madethat multiple objects, when selected, are associated with the sameaction. In these examples, one overlaid number may be displayed for themultiple objects. In this example, instead of providing a number foreach of multiple objects such as a text object, an image, and/or a playicon, a single number may be overlaid on an area of the user interfacecommon to the multiple objects.

The user may provide then provide a voice command that corresponds toselection of one of the numbers. The remote system may be provided withdata indicating that hints are being provided to the user, along withdata indicating which objects are associated with which objects. By sodoing, audio data corresponding to the voice command may be processed bythe remote system to more easily and/or accurately determine that thevoice command corresponds to an intent to select one of the hintsprovided on the user interface and to identify the hint selected by theuser. The remote system may correlate the selected hint with the objectcorresponding to the hint and may provide a directive to perform anaction on the object, as described more fully above. As a user interactswith the displayed content, such as through selecting hints, the contentmay change and/or be updated. The updated content may be utilized todetermine updated screen data, which may be utilized to generate updatedoverlay content with updated hints to be utilized by the user. Theupdated data may be sent to the remote system to assist in determiningintents and generating directives for subsequent voice commands.

The process 600 may additionally, or alternatively, include determiningthat the directive corresponds to a first action and a second action.The first action may be associated with a first priority and the secondaction may be associated with a second priority. The process 600 mayalso include determining that the first priority is greater than thesecond priority and selecting one of the first action or the secondaction to be performed on an object based at least in part on thepriority. For example, a “select” intent may correspond to opening ahyperlink, causing a video to play, causing additional information to bedisplayed, or other actions. Actions such as these may be prioritizedbased at least in part on the intent from the directive and/orcontextual information associated with the application. For example,historical use data may indicate that a given intent, whilecorresponding to multiple actions, historically corresponds to a firstaction more frequently than a second action with respect to intentsreceived via the device. Additionally, or alternatively, data indicatingthat a given intent, while corresponding to multiple actions,historically corresponds to a first action more frequently than a secondaction with respect to voice commands received via the device and/orother devices. The application may also provide an indication of whichactions are to be prioritized more than other actions.

Additionally, or alternatively, data indicating the location of objectswith respect to each other as displayed on the device may be utilized torank actions. For example, actions to be performed on objects that aredisplayed more prominently may be prioritized more than actions to beperformed on objects that are displayed less prominently. Additionally,or alternatively, certain intents may not be dependent on a specificobject displayed on the device and therefore may be associated with apredetermined action. For example, a voice command of “scroll down” maycorrespond to an intent to display content that is not currently in viewon the device and may not correspond to an intent to perform an actionwith respect to an object displayed on the device. Actions based onintents such as this that are not object dependent may be prioritizedover actions that are object dependent.

Additionally, or alternatively, data indicating previous voice commandsmay be utilized to rank actions. For example, a previous voice commandmay be “scroll down” and a subsequent voice command may be “more.”Without contextual data indicating the previous voice command, thecommand of “more” could correspond to actions such as showing morevideos, providing more information about a certain video, playing moreof a video, etc. However, utilizing the previous voice command of“scroll down,” the actions may be ranked such that an action to performan additional scroll down is prioritized over other actions.Additionally, or alternatively, data indicating that the screen data haschanged or otherwise been updated may be utilized to rank actions.Additionally, or alternatively, a predetermined prioritization ofactions may be stored and utilized. It should be understood that theexamples of action ranking are provided herein for illustration, andother examples of ranking actions are included in this disclosure.

Additionally, or alternatively, the process 600 may include determining,from document-object-model information indicating nodes associated withthe content, a first node of the content that corresponds to a valueassociated with the action and a second node of the content thatcorresponds to the value. The process 600 may also include determiningconfidence levels associated with the first node and the second nodeindicating a confidence that the nodes correspond to the value. Theaction may be performed based at least in part on which confidence levelis prioritized.

FIG. 7 illustrates a flow diagram of an example process 700 forcontrolling computing devices via audible input. The order in which theoperations or steps are described is not intended to be construed as alimitation, and any number of the described operations may be combinedin any order and/or in parallel to implement process 700.

At block 702, the process 700 may include determining that content of anapplication is being displayed on a device. This determination may bebased at least in part on initiating the application. In examples, theapplication may be without instructions for utilizing voice commands tointeract with the displayed content. For example, the application may bea third-party application that has not enabled voice interactions withthe content of the application. The third-party application may includean identifier of the application along with data representing thecontent associated with the application. The content may be described asnodes of a DOM tree, which may be utilized to perform actions on thecontent. As described herein, objects may be displayed on the userdevice. The objects may correspond to one or more nodes of the DOM treeof the application.

At block 704, the process 700 may include identifying metadataassociated with the content based at least in part on determining thatthe content is being displayed. The metadata may include indicators ofwhich portions of the application content are currently being utilizedto render the display of objects on the device.

At block 706, the process 700 may include identifying, based at least inpart on the metadata, a portion of the content that is selectable. Forexample, a portion of the content of the application may be associatedwith a link or other mechanism that, when a rendering of that content isselected by a user, causes the application and/or a device utilizing theapplication to update the content being displayed. By way of example,such a portion of the content may be associated with a “play button”object displayed on the device. A user may select the play buttonobject, and by so doing, the application may include instructions toupdate the displayed content to something linked to the selection of theplay button object. The object may be selectable via a user interface ofthe device and/or may correspond to at least a portion of node of adocument object model associated with the application. Identifyingobjects may be based at least in part on determining screen dataassociated with the displayed content. The screen data may includedocument object model (DOM) information associated with the content ofthe application. The DOM information may include identification of oneor more objects corresponding to the displayed content and/or one ormore relationships between the objects. The DOM may be an applicationprogramming interface (API) that represents hypertext markup language(HTML), extensible markup language (XML), and/or other computinglanguages in a tree structure where each node of the tree represents anobject representing part of the application content. When an object isacted upon in the tree, corresponding changes may be reflected in thedisplay of content of the application. One or more libraries associatedwith the API may be provided to allow one or more actions to be takenwith respect to the nodes in the DOM tree.

At block 708, the process 700 may include sending, to the remote system,screen data identifying the portion of the content. The screen data maybe sent to the remote system via the network and network interfacesdescribed herein. Data indicating one or more relationships between theobjects may additionally be sent to the remote system.

At block 710, the process 700 may include sending, to the remote system,audio data representing a user utterance. The user utterance maycorrespond to a request to interact with the content being displayed onthe device.

At block 712, the process 700 may include receiving, from the remotesystem and based at least in part on audio data representing the userutterance, directive data to perform an action with respect to theportion of the content. The directive data may be determined by theremote system based at least in part on the screen data and the audiodata. For example, the remote system may perform automatic speechrecognition (ASR) on the audio data to generate corresponding text data.Natural language understanding (NLU) techniques may be performed on thetext data to determine an intent associated with the voice command. ASRand NLU techniques are described in more detail below with respect toFIG. 12. As part of determining the intent associated with the userutterance, named entity recognition may be performed in connection withthe natural language understanding to identify portions of the text datathat correspond to a named entity that may be recognizable by the remotesystem. The process may link a text portion to a specific entity knownto the remote system.

To perform named entity recognition, the screen data may be utilized.The screen data may be used for entity recognition, for example, bymatching results of the ASR operations with different entitiesassociated with the application, such as portion of content displayed onthe user device. In this way, a data source database may be populatedwith some or all of the screen data provided by the user device toassist in named entity recognition. In this way, the NLU component ofthe remote system may be trained or otherwise configured to select anintent based on the screen data corresponding to content that iscurrently being displayed on the user device. Additionally, the NLUcomponent may determine a value for one or more slots associated withthe intent based on the screen data.

The intent determined by the NLU component, with, in examples,assistance from the entity recognition operations, may be sent to aspeechlet configured to generate directive data to perform actions withrespect to the third-party application. The speechlet may generate thedirective data for the device to perform based at least in part on theintent determined by the remote system. The screen data may be utilizedto generate directive data for the device and/or one or more theaccessory devices to be performed that effectuates the determinedintent. Based at least in part on determining that the utterancecorresponds to a given intent directive data corresponding to theintent, along with an indication of the object(s) on which to performthe intended action, the directive data may be generated and sent to thedevice.

At block 714, the process 700 may include causing the action to beperformed with respect to at least a portion of the content. A directivehandler of the device may receive the directive data and may determinean action to be performed based at least in part on the directive data.The directive handler may send data to a device event controllerindicating the selected action to be performed along with informationabout the object on which to perform the action. The device eventcontroller may then determine which components of the device are to beutilized to perform the action determined by the directive handler. Thedevice event controller may be further configured to identify and/ordetermine when an event occurs that corresponds to displayed contentchanging and/or being updated. Examples of such an event may includeinitiating an application, a user interaction with the content thatcauses the content to be updated, a refresh of the content, and/ortime-dependent changes to the displayed content.

A node processing component of the device may receive data from thedevice event controller indicating the action to be performed and theobjects on which the action is to be performed. The node processingcomponent may identify stored node information. The node processingcomponent may attempt to match or substantially match the identifiedobject from the directive to a node associated with the application.This process may be performed using a keyword search, where thekeyword(s) used in the search may be words used to describe the object.The node that matches or best matches the searched-for phrase may beselected as the node on which the action is to be performed. A keywordprocessing component of the user device may be utilized to return a listof searchable words with stop words, such as “and,” “of,” and/or “the”filtered out. This information may be utilized to match the keywords tothe proper node. Having determined the node on which to perform anaction and having determined the action to be performed, the action maybe performed on the node of the application.

The process 700 may additionally, or alternatively, include causingdisplay of overlay content on the content. The overlay content mayinclude an identifier proximate to an object associated with the portionof the content. The process 700 may also include sending, to the remotesystem, data associating the identifier with the object. The second datamay be utilized by the remote system to generate the directive and/or todetermine an intent associated with the voice command. For example, theuser device, an accessory device, and/or the remote system may beconfigured to provide one or more “hints” to assist a user withproviding a voice command and/or determining an intent from the voicecommand with more accuracy. For example, utilizing the screen dataindicating the objects displayed on the screen, overlay content may begenerated that provides numbers and/or letters, for example, associatedwith the displayed objects. The user, seeing the overlay content, maythen provide a voice command that instructs the system to perform anaction on a selected number and/or letter. For example, the overlaycontent may include one or more rendering of numbers. As used in thisexample, a number may be displayed as overlay content on one or more ofthe selectable objects being displayed on the user interface.

In examples, a number may be provided for each object displayed on theuser interface. In other examples, only a portion of the objects mayinclude an overlaid number. For example, a determination may be madethat multiple objects, when selected, are associated with the sameaction. In these examples, one overlaid number may be displayed for themultiple objects. In this example, instead of providing a number foreach of multiple objects such as a text object, an image, and/or a playicon, a single number may be overlaid on an area of the user interfacecommon to the multiple objects.

The user may provide then provide a voice command that corresponds toselection of one of the numbers. The remote system may be provided withdata indicating that hints are being provided to the user, along withdata indicating which objects are associated with which objects. By sodoing, audio data corresponding to the voice command may be processed bythe remote system to more easily and/or accurately determine that thevoice command corresponds to an intent to select one of the hintsprovided on the user interface and to identify the hint selected by theuser. The remote system may correlate the selected hint with the objectcorresponding to the hint and may provide a directive to perform anaction on the object, as described more fully above. As a user interactswith the displayed content, such as through selecting hints, the contentmay change and/or be updated. The updated content may be utilized todetermine updated screen data, which may be utilized to generate updatedoverlay content with updated hints to be utilized by the user. Theupdated data may be sent to the remote system to assist in determiningintents and generating directives for subsequent voice commands.

The process 700 may additionally, or alternatively, include determiningthat the directive corresponds to a first action and a second action.The first action may be associated with a first priority and the secondaction may be associated with a second priority. The process 700 mayalso include determining that the first priority is greater than thesecond priority and selecting one of the first action or the secondaction to be performed on an object based at least in part on thepriority. For example, a “select” intent may correspond to opening ahyperlink, causing a video to play, causing additional information to bedisplayed, or other actions. Actions such as these may be prioritizedbased at least in part on the intent from the directive and/orcontextual information associated with the application. For example,historical use data may indicate that a given intent, whilecorresponding to multiple actions, historically corresponds to a firstaction more frequently than a second action with respect to intentsreceived via the device. Additionally, or alternatively, data indicatingthat a given intent, while corresponding to multiple actions,historically corresponds to a first action more frequently than a secondaction with respect to voice commands received via the device and/orother devices. The application may also provide an indication of whichactions are to be prioritized more than other actions.

Additionally, or alternatively, data indicating the location of objectswith respect to each other as displayed on the device may be utilized torank actions. For example, actions to be performed on objects that aredisplayed more prominently may be prioritized more than actions to beperformed on objects that are displayed less prominently. Additionally,or alternatively, certain intents may not be dependent on a specificobject displayed on the device and therefore may be associated with apredetermined action. For example, a voice command of “scroll down” maycorrespond to an intent to display content that is not currently in viewon the device and may not correspond to an intent to perform an actionwith respect to an object displayed on the device. Actions based onintents such as this that are not object dependent may be prioritizedover actions that are object dependent.

Additionally, or alternatively, data indicating previous voice commandsmay be utilized to rank actions. For example, a previous voice commandmay be “scroll down” and a subsequent voice command may be “more.”Without contextual data indicating the previous voice command, thecommand of “more” could correspond to actions such as showing morevideos, providing more information about a certain video, playing moreof a video, etc. However, utilizing the previous voice command of“scroll down,” the actions may be ranked such that an action to performan additional scroll down is prioritized over other actions.Additionally, or alternatively, data indicating that the screen data haschanged or otherwise been updated may be utilized to rank actions.Additionally, or alternatively, a predetermined prioritization ofactions may be stored and utilized. It should be understood that theexamples of action ranking are provided herein for illustration, andother examples of ranking actions are included in this disclosure.

The process 700 may additionally, or alternatively, include determiningthat second content associated with the application is being displayedon the device. Based at least in part on determining that the secondcontent is being displayed on the device, a second content displayed onthe device may be identified. The process 700 may include sending, tothe remote system, second screen data identifying the second content.The second content may differ from the first content. In this way, thescreen data identified, determined, and/or sent to the remote system maybe updated as the displayed content is updated. The updated screen datamay be utilized by the remote system to inform natural languageunderstanding of subsequent voice commands and generation of subsequentdirectives to be performed by the device. Determining that at least aportion of the content displayed on the device has changed may be basedat least in part on a determination that an event has occurred withrespect to the content displayed on the device. For example, the eventmay include opening of an application, interaction by the user with thecontent, refreshing of content, and/or time-dependent changes to thedisplayed content. The device event controller of the device, based atleast in part on identifying and/or determining that an event hasoccurred, may cause a third-party application interface component of thedevice to identify and/or determine updated content being displayed onthe device.

FIG. 8 illustrates a flow diagram of an example process 800 forcontrolling computing devices via audible input. The order in which theoperations or steps are described is not intended to be construed as alimitation, and any number of the described operations may be combinedin any order and/or in parallel to implement process 800.

At block 802, process 800 may include receiving screen data indicating aportion of content of an application being displayed on the device. Theapplication may be without instructions for utilizing voice commands tointeract with the displayed content. For example, the application may bea third-party application that has not enabled voice interactions withthe content of the application. The third-party application may includean identifier of the application along with data representing thecontent associated with the application. The content may be described asnodes of a DOM tree, which may be utilized to perform actions on thecontent. These nodes may also be described as and/or correspond toobjects. As described herein, objects may be displayed on the userdevice. The objects may correspond to one or more nodes of the DOM treeof the application. Determining that the application is currently beingdisplayed may include receiving data from the application and/or anothersystem on which the application is stored indicating that theapplication is being utilized. Additionally, or alternatively, an eventhandler may receive an indication that an event corresponding to openingthe application has occurred.

The objects may correspond to at least a portion of nodes of a documentobject model associated with the application. Identifying objects may bebased at least in part on determining screen data associated with thedisplayed content. The screen data may include document object model(DOM) information associated with the content of the application. TheDOM information may include identification of one or more objectscorresponding to the displayed content and/or one or more relationshipsbetween the objects. The DOM may be an application programming interface(API) that represents hypertext markup language (HTML), extensiblemarkup language (XML), and/or other computing languages in a treestructure where each node of the tree represents an object representingpart of the application content. When an object is acted upon in thetree, corresponding changes may be reflected in the display of contentof the application. One or more libraries associated with the API may beprovided to allow one or more actions to be taken with respect to thenodes in the DOM tree.

At block 804, the process 800 may include receiving audio datarepresenting a user utterance. The audio data may be associated with thedevice. The audio data may be generated by one or more microphonescapturing corresponding audio within the environment in which the deviceis disposed. For example, the audio may include a user utterance from auser in the environment. Audio corresponding to this utterance may becaptured by one or more microphones of the user device and/or anaccessory device, and the corresponding audio data may be generated.

At block 806, the process 800 may include determining intent data basedat least in part on the screen data and the audio data. For example, thesystem may perform automatic speech recognition (ASR) on the audio datato generate corresponding text data. Natural language understanding(NLU) techniques may be performed on the text data to determine anintent associated with the voice command. ASR and NLU techniques aredescribed in more detail below with respect to FIG. 12. Determining theintent data may be based at least in part on a finite state transducerassociated with the speechlet generating directive data to be sent tothe device and/or associated with the application. As part ofdetermining the intent data associated with the utterance, named entityrecognition may be performed in connection with the natural languageunderstanding to identify portions of the text data that correspond to anamed entity that may be recognizable by the remote system. The processmay link a text portion to a specific entity known to the remote system.

To perform named entity recognition, the screen data may be utilized.The screen data may be used for entity recognition, for example, bymatching results of the ASR operations with different entitiesassociated with the application, such as objects displayed on the userdevice. In this way, a data source database may be populated with someor all of the screen data provided by the user device to assist in namedentity recognition. In this way, the NLU component of the remote systemmay be trained or otherwise configured to select an intent based on thescreen data corresponding to content that is currently being displayedon the user device.

At block 808, the process 800 may include generating directive dataassociated with the intent data. The generating may be based at least inpart on the intent data. The directive data may indicate an action to beperformed with respect to the portion of the content. The intent datamay be determined by the NLU component, with, in examples, assistancefrom the entity recognition operations, may be sent to a speechletconfigured to generate directives to perform actions with respect to thethird-party application. The speechlet may generate the directive datafor the device to perform based at least in part on the intent datadetermined by the remote system. The speechlet may be a speechprocessing component of multiple speech processing components associatedwith the remote system. The speechlet may be selected from other speechprocessing components based at least in part on the first dataindicating that content associated with the application is beingdisplayed and/or the second data identifying the portion of the content.The screen data may be utilized to generate directive data for thedevice and/or one or more the accessory devices to be performed thateffectuates the determined intent. Based at least in part on determiningthat the utterance corresponds to a given intent directive datacorresponding to the intent, along with an indication of the object(s)on which to perform the intended action, the directive data may begenerated and sent to the device.

Generating the directive data may be based at least in part on anindication that the application has been authorized to receive thedirective data. For example, when a third-party application developerpublishes an application for sale or consumption on an applicationstore, the developer may be queried by the application store todetermine whether the developer would like to voice enable theapplication. If the developer indicates that voice enablement isauthorized, an indication of the application may be stored in aregistry. Thereafter, when data indicating that content of theapplication is being displayed on a device, audio data corresponding tovoice commands may be processed to voice enable the application.

At block 810, the process 800 may include sending the directive data tothe device. A directive handler of the device may receive the directivedata and may determine an action to be performed based at least in parton the directive data. The directive handler may send data to a deviceevent controller indicating the selected action to be performed alongwith information about the object on which to perform the action. Thedevice event controller may then determine which components of thedevice are to be utilized to perform the action determined by thedirective handler. The device event controller may be further configuredto identify and/or determine when an event occurs that corresponds todisplayed content changing and/or being updated. Examples of such anevent may include initiating an application, a user interaction with thecontent that causes the content to be updated, a refresh of the content,and/or time-dependent changes to the displayed content.

A node processing component of the device may receive data from thedevice event controller indicating the action to be performed and theobjects on which the action is to be performed. The node processingcomponent may identify stored node information. The node processingcomponent may attempt to match or substantially match the identifiedobject from the directive to a node associated with the application.This process may be performed using a keyword search, where thekeyword(s) used in the search may be words used to describe the object.The node that matches or best matches the searched-for phrase may beselected as the node on which the action is to be performed. A keywordprocessing component of the user device may be utilized to return a listof searchable words with stop words, such as “and,” “of,” and/or “the”filtered out. This information may be utilized to match the keywords tothe proper node. Having determined the node on which to perform anaction and having determined the action to be performed, the action maybe performed on the node of the application.

The process 800 may additionally, or alternatively, include generatingan identifier corresponding to at least one of the objects associatedwith the application and sending the identifier to the device to bedisplayed. The process 800 may also include determining that the intentcorresponds to a selection of the identifier. Generation of thedirective and/or determination an intent associated with the voicecommand may be based at least in part on selection of the identifier.For example, the user device, an accessory device, and/or the remotesystem may be configured to provide one or more “hints” to assist a userwith providing a voice command and/or determining an intent from thevoice command with more accuracy. For example, utilizing the screen dataindicating the objects displayed on the screen, overlay content may begenerated that provides numbers and/or letters, for example, associatedwith the displayed objects. The user, seeing the overlay content, maythen provide a voice command that instructs the system to perform anaction on a selected number and/or letter. For example, the overlaycontent may include one or more rendering of numbers. As used in thisexample, a number may be displayed as overlay content on one or more ofthe objects being displayed on the user interface.

In examples, a number may be provided for each object displayed on theuser interface. In other examples, only a portion of the objects mayinclude an overlaid number. For example, a determination may be madethat multiple objects, when selected, are associated with the sameaction. In these examples, one overlaid number may be displayed for themultiple objects. In this example, instead of providing a number foreach of multiple objects such as a text object, an image, and/or a playicon, a single number may be overlaid on an area of the user interfacecommon to the multiple objects.

The user may provide then provide a voice command that corresponds toselection of one of the numbers. The remote system may be provided withdata indicating that hints are being provided to the user, along withdata indicating which objects are associated with which objects. By sodoing, audio data corresponding to the voice command may be processed bythe remote system to more easily and/or accurately determine that thevoice command corresponds to an intent to select one of the hintsprovided on the user interface and to identify the hint selected by theuser. The remote system may correlate the selected hint with the objectcorresponding to the hint and may provide a directive to perform anaction on the object, as described more fully above. As a user interactswith the displayed content, such as through selecting hints, the contentmay change and/or be updated. The updated content may be utilized todetermine updated screen data, which may be utilized to generate updatedoverlay content with updated hints to be utilized by the user. Theupdated data may be sent to the remote system to assist in determiningintents and generating directives for subsequent voice commands.

FIG. 9 illustrates a flow diagram of an example process 900 for rankingdirectives. The order in which the operations or steps are described isnot intended to be construed as a limitation, and any number of thedescribed operations may be combined in any order and/or in parallel toimplement process 900.

At block 902, the process 900 may include receiving audio datarepresenting a user utterance. The audio data may correspond to audiocaptured via one or more microphones from an environment in which adevice is disposed. For example, the audio may include a user utterancefrom a user in the environment. Audio corresponding to this utterancemay be captured by one or more microphones of the user device and/or anaccessory device, and the corresponding audio data may be generated.

At block 904, the process 900 may include determining intent data basedat least in part on the audio data. For example, the automatic speechrecognition (ASR) may be performed on the audio data to generatecorresponding text data. Natural language understanding (NLU) techniquesmay be performed on the text data to determine an intent associated withthe user utterance. ASR and NLU techniques are described in more detailbelow with respect to FIG. 12. As part of determining the intent dataassociated with the utterance, named entity recognition may be performedin connection with the natural language understanding to identifyportions of the text data that correspond to a named entity that may berecognizable by the remote system. The process may link a text portionto a specific entity known to the remote system.

To perform named entity recognition, screen data indicating objectsdisplayed on the device may be utilized. The screen data may be used forentity recognition, for example, by matching results of the ASRoperations with different entities associated with the application, suchas objects displayed on the user device. In this way, a data sourcedatabase may be populated with some or all of the screen data providedby the user device to assist in named entity recognition. In this way,the NLU component of the system may be trained or otherwise configuredto select an intent based on the screen data corresponding to contentthat is currently being displayed on the user device. Additionally, theNLU component may determine a value for one or more slots associatedwith the intent based on the screen data.

At block 906, the process 900 may include identifying first directivedata corresponding to the intent data. The first directive data may beconfigured to, when sent to a device, cause the device to perform anoperation with respect to the portion of the content. The intent datadetermined by the NLU component, with, in examples, assistance from theentity recognition operations, may be sent to a speechlet configured togenerate directive data to perform actions with respect to thethird-party application. The speechlet may generate the directive datafor the device to perform based at least in part on the intent datadetermined by the remote system. The screen data may be utilized togenerate directive data for the device and/or one or more the accessorydevices to be performed that effectuates the determined intent.

At block 908, the process 900 may include identifying second directivedata corresponding to the intent data. The second directive data may beconfigured to, when sent to the device, cause the device to perform theoperation or another operation with respect to the portion of thecontent. The second directive data may be identified in a manner similarto how the first directive data was identified with respect to block906. For example, the user utterance may represent an intent that may bedetermined to correspond to more than one directive. In these examples,the directive data may be ranked such that an ambiguous utterance mayresult in a highest-ranked directive data being sent to the user device.

At block 910, the process 900 may include determining a first priorityassociated with the first directive data from a first content typeassociated with the portion of the content. The first content type maycomprise at least one of text content, image content, and/or atext-input content. The first priority may be determined on a scale,such as 1 to 10. It should be understood that the example scale providedherein is by way of illustration and not limitation. No scale may beused, or any alternative scale may be used. Additionally, in someexamples 10 may be the highest priority and 1 may be the lowestpriority. Or, 1 may be the highest priority and 10 may be the lowestpriority.

At block 912, the process 900 may include determining a second priorityassociated with the second directive data from a second content typeassociated with the portion of the content. The second content type mayinclude the same or similar content types as those described above withrespect to block 910. For example, an image content type may beprioritized over a text content type, and a text-input content type.Other prioritizations are included in this disclosure that are outsidethis specific example.

At block 914, the process 900 may include determining that the firstdirective data is prioritized over the second directive data based onthe first content type being prioritized over the second content type.Additionally, or alternatively, prioritizing directive data may be basedat least in part on historical use data, the application associated withthe displayed content, location of objects with respect to each other asdisplayed on the user device, categorization of intents, previous userutterances, and/or screen data updating.

For example, historical use data may indicate that a given utterance,while corresponding to multiple directives, historically corresponds tofirst directive data more frequently than second directive data withrespect to utterances received via the user device. Additionally, oralternatively, data indicating that a given utterance, whilecorresponding to multiple directives, historically corresponds to firstdirective data more frequently than second directive data with respectto utterances received via the user device and/or other devices. Theapplication may also provide an indication of which directives are to beprioritized more than other directives. Additionally, or alternatively,data indicating the location of objects corresponding to the contentwith respect to each other as displayed on the user device may beutilized to rank directive data. For example, directives to performactions on objects that are rendered more prominently may be prioritizedmore than directives to perform actions on objects that are renderedless prominently. Additionally, or alternatively, certain intents maynot be dependent on a specific content displayed on the user device andtherefore may be associated with predetermined directive data. Forexample, a user utterance of “scroll down” may correspond to an intentto display content that is not currently in view on the user device andmay not correspond to an intent to perform an action with respect to anobject displayed on the user device. Directive data to perform actionsbased on intents such as this that are not content dependent may beprioritized over directive data to perform actions that are contentdependent.

Additionally, or alternatively, data indicating previous utterances maybe utilized to rank directive data. For example, a previous utterancemay be “scroll down” and a subsequent utterance may be “more.” Withoutcontextual data indicating the previous utterance, the utterance of“more” could correspond to directive data to perform actions such asshowing more videos, providing more information about a certain video,playing more of a video, etc. However, utilizing the previous utteranceof “scroll down,” the directive data may be ranked such that a directiveto perform an additional scroll down action is prioritized over otherdirectives. Additionally, or alternatively, data indicating that thescreen data has changed or otherwise been updated may be utilized torank directive data. Additionally, or alternatively, a predeterminedprioritization of directive data may be stored and utilized by theremote system.

For example, directive data to perform actions on objects associatedwith the application may be ranked based at least in part on the type ofcontent being acted on. For example, content associated with both animage and text may be prioritized over content with just text, just animage, selectable text, and/or editable text. For example, a userutterance of “play video” may be associated with directive data toperform actions on various objects, such as an image representing avideo with a play icon overlaid thereon, text that reads “play,” a playicon, and/or an editable field such as a search field to which thephrase “play video” may be inserted. In this example, the directive dataassociated with the image and overlaid play icon may be prioritized overthe other directive data. Likewise, the play icon may be prioritizedover the text that reads “play.” Likewise, the text that reads “play”may be prioritized over the editable field. The ranking of directivedata may be based at least in part on the intent determined by the NLUcomponent. For example, a determined intent of “play” may correspond toa ranking as discussed above. Additionally, or alternatively, adetermined intent of “search for” may correspond to a ranking thatprioritizes directive data to perform actions on objects associated witheditable fields over directive data to perform actions on objectsassociated with selection of objects. Additionally, or alternatively, adetermined intent of “select” may correspond to a ranking thatprioritizes directive data to perform actions on objects that, whenselected, cause the content to be updated over directive data to performactions on other objects, such as inserting text into a search field. Itshould be understood that the examples of directive data ranking areprovided herein for illustration, and other examples of rankingdirective data are included in this disclosure.

At block 916, the process 900 may include selecting the first directivedata based at least in part on the first directive data beingprioritized over the second directive data. At block 918, the process900 may include sending the first directive data to the device to causean action to be performed on the portion of the content.

FIG. 10 illustrates a flow diagram of an example process 1000 forranking directives. The order in which the operations or steps aredescribed is not intended to be construed as a limitation, and anynumber of the described operations may be combined in any order and/orin parallel to implement process 1000.

At block 1002, the process 1000 may include receiving audio datarepresenting a user utterance. The audio data may correspond to audiocaptured via one or more microphones from an environment in which adevice is disposed. For example, the audio may include a user utterancefrom a user in the environment. Audio corresponding to this utterancemay be captured by one or more microphones of the user device and/or anaccessory device, and the corresponding audio data may be generated.

At block 1004, the process 1000 may include determining, based at leastin part on audio data, intent data associated with the user utterance.Automatic speech recognition (ASR) may be performed on the audio data togenerate corresponding text data. Natural language understanding (NLU)techniques may be performed on the text data to determine intent dataassociated with the user utterance. ASR and NLU techniques are describedin more detail below with respect to FIG. 12. As part of determining theintent data associated with the user utterance, named entity recognitionmay be performed in connection with the natural language understandingto identify portions of the text data that correspond to a named entitythat may be recognizable by the remote system. The process may link atext portion to a specific entity known to the remote system.

To perform named entity recognition, screen data indicating objectscorresponding to content displayed on the device may be utilized. Thescreen data may be used for entity recognition, for example, by matchingresults of the ASR operations with different entities associated withthe application, such as objects displayed on the user device. In thisway, a data source database may be populated with some or all of thescreen data provided by the user device to assist in named entityrecognition. In this way, the NLU component of the system may be trainedor otherwise configured to select an intent based on the screen datacorresponding to content that is currently being displayed on the userdevice. Additionally, the NLU component may determine a value for one ormore slots associated with the intent based on the screen data.

At block 1006, the process 1000 may include identifying first directivedata corresponding to the intent data. The first directive data may beconfigured to, when sent to a device, cause the device to perform anoperation. The first directive data may be configured to be sent to adevice to perform an operation on an object associated with contentdisplayed on the device. The intent data determined by the NLUcomponent, with, in examples, assistance from the entity recognitionoperations, may be sent to a speechlet configured to generate directivedata to perform actions with respect to the third-party application. Thespeechlet may generate the directive data for the device to performbased at least in part on the intent data determined by the remotesystem. The screen data may be utilized to generate directive data forthe device and/or one or more the accessory devices to be performed thateffectuates the determined intent.

At block 1008, the process 1000 may include identifying second directivedata corresponding to the intent data. The second directive data may beconfigured to, when sent to the device, cause the device to perform theoperation or another operation. The second directive data may beidentified in a manner similar to how the first directive data wasidentified with respect to block 1006. For example, the user utterancemay represent an intent that may be determined to correspond to morethan one directive. In these examples, the directive data may be rankedsuch that an ambiguous user utterance may result in a highest-rankeddirective data being sent to the user device.

At block 1010, the process 1000 may include determining that the firstdirective data is prioritized over the second directive data.Prioritization of directive data may be based at least in part onhistorical use data, the application associated with the displayedcontent, location of objects with respect to each other as displayed onthe user device, categorization of intents, previous voice commands,and/or screen data updating.

For example, historical use data may indicate that a given voicecommand, while corresponding to multiple directives, historicallycorresponds to first directive data more frequently than seconddirective data with respect to voice commands received via the userdevice. Additionally, or alternatively, data indicating that a givenutterance, while corresponding to multiple directives, historicallycorresponds to first directive data more frequently than seconddirective data with respect to utterances received via the user deviceand/or other devices. The application may also provide an indication ofwhich directive data is to be prioritized more than other directivedata. Additionally, or alternatively, data indicating the location ofobjects with respect to each other as displayed on the user device maybe utilized to rank directive data. For example, directive data toperform actions on objects that are rendered more prominently may beprioritized more than directive data to perform actions on objects thatare rendered less prominently. Additionally, or alternatively, certainintents may not be dependent on a specific object displayed on the userdevice and therefore may be associated with predetermined directivedata. For example, a user utterance of “scroll down” may correspond toan intent to display content that is not currently in view on the userdevice and may not correspond to an intent to perform an action withrespect to an object displayed on the user device. Directive data toperform actions based on intents such as this that are not objectdependent may be prioritized over directive data to perform actions thatare object dependent. By way of further example, the process 1000 mayinclude determining a second intent associated with a second userutterance. A determination may be made that at least one of the firstdirective data or the second directive data corresponds to the secondintent and that third directive data is identified as corresponding tothe second intent. In this example, the third directive data may beobject and/or content independent such that an action associated withthe directive data does not require a value for an object to make thedirective actionable. The third directive data may be selected based atleast in part on the third directive data being object independent. Thethird directive data may then be sent to the device.

Additionally, or alternatively, data indicating previous utterances maybe utilized to rank directive data. For example, a previous utterancemay be “scroll down” and a subsequent utterance may be “more.” Withoutcontextual data indicating the previous utterance, the utterance of“more” could correspond to directive data to perform actions such asshowing more videos, providing more information about a certain video,playing more of a video, etc. However, utilizing the previous utteranceof “scroll down,” the directive data may be ranked such that directivedata to perform an additional scroll down action is prioritized overother directive data. Additionally, or alternatively, data indicatingthat the screen data has changed or otherwise been updated may beutilized to rank directive data. Additionally, or alternatively, apredetermined prioritization of directive data may be stored andutilized by the remote system.

For example, directive data to perform actions on objects associatedwith the application may be ranked based at least in part on the type ofobject being acted on. In these examples, the process 1000 may includedetermining that the first directive data is associated with a valueassociated with the intent, where the value may indicate that a firstobject on which to perform an operation is associated with a firstobject type. The process 1000 may also include determining that thevalue is associated with a second object of a second object type. Theranking of directives may be based at least in part on this ranking,such that directives associated with objects of one type are prioritizedover directives associated with objects of another type. For example,objects associated with both an image and text may be prioritized overobjects with just text, just an image, selectable text, and/or editabletext. For example, a voice command of “play video” may be associatedwith directives to perform actions on various objects, such as an imagerepresenting a video with a play icon overlaid thereon, text that reads“play,” a play icon, and/or an editable field such as a search field towhich the phrase “play video” may be inserted. In this example, thedirective associated with the image and overlaid play icon may beprioritized over the other directives. Likewise, the play icon may beprioritized over the text that reads “play.” Likewise, the text thatreads “play” may be prioritized over the editable field.

The prioritization of directive data may be based at least in part onthe intent data determined by the NLU component. For example, adetermined intent of “play” may correspond to a ranking as discussedabove. Additionally, or alternatively, a determined intent of “searchfor” may correspond to a ranking that prioritizes directive data toperform actions on objects associated with editable fields overdirective data to perform actions on objects associated with selectionof objects. Additionally, or alternatively, a determined intent of“select” may correspond to a ranking that prioritizes directive data toperform actions on objects that, when selected, cause the content to beupdated over directive data to perform actions on other objects, such asinserting text into a search field. It should be understood that theexamples of directive data ranking are provided herein for illustration,and other examples of ranking directive data are included in thisdisclosure.

At block 1012, the process 1000 may include selecting the firstdirective data based at least in part on the first directive data beingprioritized over the second directive data. At block 1014, the process1000 may include sending the first directive data to the device to causean action to be performed on the object.

The process 1000 may additionally include receiving an indication thatcontent displayed by the device has been updated and determining asecond ranking of the first directive data and the second directivedata. The process 1000 may also include selecting the second directivedata and sending the second directive data to the device based at leastin part on the second ranking. In these examples, the updated contentdisplayed on the device may include different objects, may be associatedwith different actions to be taken on the objects, and/or may beassociated with contextual information indicating that certain directivedata is sent to the device more prominently than other directive data.

FIG. 11 illustrates a flow diagram of an example process 1100 forranking directives. The order in which the operations or steps aredescribed is not intended to be construed as a limitation, and anynumber of the described operations may be combined in any order and/orin parallel to implement process 1100.

At block 1102, the process 1100 may include determining, based at leastin part on audio data representing a user utterance, an intent dataassociated with the user utterance. The audio data may correspond toaudio captured via one or more microphones from an environment in whicha device is disposed. For example, the audio may include a userutterance from a user in the environment. Audio corresponding to thisuser utterance may be captured by one or more microphones of the userdevice and/or an accessory device, and the corresponding audio data maybe generated. Automatic speech recognition (ASR) may be performed on theaudio data to generate corresponding text data. Natural languageunderstanding (NLU) techniques may be performed on the text data todetermine intent data associated with the user utterance. ASR and NLUtechniques are described in more detail below with respect to FIG. 12.As part of determining the intent data associated with the userutterance, named entity recognition may be performed in connection withthe natural language understanding to identify portions of the text datathat correspond to a named entity that may be recognizable by the remotesystem. The process may link a text portion to a specific entity knownto the remote system.

To perform named entity recognition, screen data indicating objectsdisplayed on the device may be utilized. The screen data may be used forentity recognition, for example, by matching results of the ASRoperations with different entities associated with the application, suchas objects displayed on the user device. In this way, a data sourcedatabase may be populated with some or all of the screen data providedby the user device to assist in named entity recognition. In this way,the NLU component of the system may be trained or otherwise configuredto select an intent based on the screen data corresponding to contentthat is currently being displayed on the user device. Additionally, theNLU component may determine a value for one or more slots associatedwith the intent based on the screen data.

At block 1104, the process 1100 may include identifying first directivedata corresponding to the intent data. The first directive data may beconfigured to be sent to a device to perform an operation. The firstdirective data may be configured to be sent to a device to perform anoperation on an object associated with content displayed on the device.The intent data determined by the NLU component, with, in examples,assistance from the entity recognition operations, may be sent to aspeechlet configured to generate directive data to perform actions withrespect to the third-party application. The speechlet may generate thedirective data for the device to perform based at least in part on theintent data determined by the remote system. The screen data may beutilized to generate directive data for the device and/or one or morethe accessory devices to be performed that effectuates the determinedintent.

At block 1106, the process 1100 may include identifying second directivedata corresponding to the intent data. The second directive data may beconfigured to be sent to the device to perform the operation or anotheroperation. The second directive data may be identified in a mannersimilar to how the first directive data was identified with respect toblock 1104. For example, the user utterance may represent an intent thatmay be determined to correspond to more than one directive. In theseexamples, the directive data may be ranked such that an ambiguousutterance may result in highest-ranked directive data being sent to theuser device.

At block 1108, the process 1100 may include determining that the firstdirective data is prioritized over the second directive data.Prioritization of directive data may be based at least in part onhistorical use data, the application associated with the displayedcontent, location of objects with respect to each other as displayed onthe user device, categorization of intents, previous voice commands,and/or screen data updating.

For example, historical use data may indicate that a given userutterance, while corresponding to multiple directives, historicallycorresponds to first directive data more frequently than seconddirective data with respect to utterances received via the user device.Additionally, or alternatively, data indicating that a given utterance,while corresponding to multiple directives, historically corresponds tofirst directive data more frequently than second directive data withrespect to utterances received via the other devices. The applicationmay also provide an indication of which directive data is to beprioritized more than other directive data. Additionally, oralternatively, data indicating the location of objects with respect toeach other as displayed on the user device may be utilized to rankdirective data. For example, directive data to perform actions onobjects that are rendered more prominently may be prioritized more thandirective data to perform actions on objects that are rendered lessprominently. Additionally, or alternatively, certain intents may not bedependent on a specific object displayed on the user device andtherefore may be associated with predetermined directive data. Forexample, a voice command of “scroll down” may correspond to an intent todisplay content that is not currently in view on the user device and maynot correspond to an intent to perform an action with respect to anobject displayed on the user device. Directive data to perform actionsbased on intents such as this that are not object dependent may beprioritized over directive data to perform actions that are objectdependent. By way of further example, the process 1100 may includedetermining a second intent associated with a second user utterance. Adetermination may be made that at least one of the first directive dataor the second directive data corresponds to the second intent and thatthird directive data is identified as corresponding to the secondintent. In this example, the third directive data may be objectindependent such that an action associated with the directive data doesnot require a value for an object to make the directive actionable. Thethird directive data may be selected based at least in part on the thirddirective data being object independent. The third directive data maythen be sent to the device.

Additionally, or alternatively, data indicating previous utterances maybe utilized to prioritize directive data. For example, a previousutterance may be “scroll down” and a subsequent utterance may be “more.”Without contextual data indicating the previous utterance, the utteranceof “more” could correspond to directive data to perform actions such asshowing more videos, providing more information about a certain video,playing more of a video, etc. However, utilizing the previous utteranceof “scroll down,” the directive data may be ranked such that directivedata to perform an additional scroll down action is prioritized overother directive data. Additionally, or alternatively, data indicatingthat the screen data has changed or otherwise been updated may beutilized to rank directive data. Additionally, or alternatively, apredetermined prioritization of directive data may be stored andutilized by the remote system.

For example, directive data to perform actions on objects associatedwith the application may be prioritized based at least in part on thetype of object being acted on. In these examples, the process 1100 mayinclude determining that the first directive data is associated with avalue associated with the intent, where the value may indicate that afirst object and/or portion of the content corresponding to the objecton which to perform an operation is associated with a first object type.The process 1100 may also include determining that the value isassociated with a second object of a second object type. The ranking ofdirective data may be based at least in part on this ranking, such thatdirective data associated with objects of one type are prioritized overdirective data associated with objects of another type. For example,objects associated with both an image and text may be prioritized overobjects with just text, just an image, selectable text, and/or editabletext. For example, a user utterance of “play video” may be associatedwith directive data to perform actions on various objects, such as animage representing a video with a play icon overlaid thereon, text thatreads “play,” a play icon, and/or an editable field such as a searchfield to which the phrase “play video” may be inserted. In this example,the directive data associated with the image and overlaid play icon maybe prioritized over the other directive data. Likewise, the play iconmay be prioritized over the text that reads “play.” Likewise, the textthat reads “play” may be prioritized over the editable field.

The prioritization of directive data may be based at least in part onthe intent data determined by the NLU component. For example, adetermined intent of “play” may correspond to a ranking as discussedabove. Additionally, or alternatively, a determined intent of “searchfor” may correspond to a ranking that prioritizes directive data toperform actions on objects associated with editable fields overdirectives to perform actions on objects associated with selection ofobjects. Additionally, or alternatively, a determined intent of “select”may correspond to a ranking that prioritizes directive data to performactions on objects that, when selected, cause the content to be updatedover directive data to perform actions on other objects, such asinserting text into a search field. It should be understood that theexamples of directive data ranking are provided herein for illustration,and other examples of ranking directive data are included in thisdisclosure.

At block 1110, the process 1100 may include sending the first directivedata to the device based at least in part on determining that the firstdirective data is prioritized over the second directive data.

The process 1100 may additionally include receiving an indication thatcontent displayed by the device has been updated and determining asecond ranking of the first directive data and the second directivedata. The process 1100 may also include selecting the second directivedata and sending the second directive data to the device based at leastin part on the second ranking. In these examples, the updated contentdisplayed on the device may include different objects, may be associatedwith different actions to be taken on the objects, and/or may beassociated with contextual information indicating that certaindirectives are sent to the device more prominently than otherdirectives.

FIG. 12 illustrates a conceptual diagram of how a spoken utterance canbe processed, allowing a system to capture and execute commands spokenby a user, such as spoken commands that may follow a wakeword, ortrigger expression, (i.e., a predefined word or phrase for “waking” adevice, causing the device to begin sending audio data to a remotesystem, such as system 108). The various components illustrated may belocated on a same or different physical devices. Communication betweenvarious components illustrated in FIG. 12 may occur directly or across anetwork 110. An audio capture component, such as a microphone 118 of theuser device 102, or another device, captures audio 1200 corresponding toa spoken utterance. The device 102 or 104, using a wakeword detectionmodule 1201, then processes audio data corresponding to the audio 1200to determine if a keyword (such as a wakeword) is detected in the audiodata. Following detection of a wakeword, the device 102 or 104 sendsaudio data 1202 corresponding to the utterance to the remote system 108that includes an ASR module 1203. The audio data 1202 may be output froman optional acoustic front end (AFE) 1256 located on the device prior totransmission. In other instances, the audio data 1202 may be in adifferent form for processing by a remote AFE 1256, such as the AFE 1256located with the ASR module 1203 of the remote system 108.

The wakeword detection module 1201 works in conjunction with othercomponents of the user device, for example a microphone to detectkeywords in audio 1200. For example, the device may convert audio 1200into audio data, and process the audio data with the wakeword detectionmodule 1201 to determine whether human sound is detected, and if so, ifthe audio data comprising human sound matches an audio signature and/ormodel corresponding to a particular keyword.

The user device may use various techniques to determine whether audiodata includes human sound. Some embodiments may apply voice activitydetection (VAD) techniques. Such techniques may determine whether humansound is present in an audio input based on various quantitative aspectsof the audio input, such as the spectral slope between one or moreframes of the audio input; the energy levels of the audio input in oneor more spectral bands; the signal-to-noise ratios of the audio input inone or more spectral bands; or other quantitative aspects. In otherembodiments, the user device may implement a limited classifierconfigured to distinguish human sound from background noise. Theclassifier may be implemented by techniques such as linear classifiers,support vector machines, and decision trees. In still other embodiments,Hidden Markov Model (HMM) or Gaussian Mixture Model (GMM) techniques maybe applied to compare the audio input to one or more acoustic models inhuman sound storage, which acoustic models may include modelscorresponding to human sound, noise (such as environmental noise orbackground noise), or silence. Still other techniques may be used todetermine whether human sound is present in the audio input.

Once human sound is detected in the audio received by user device (orseparately from human sound detection), the user device may use thewakeword detection module 1201 to perform wakeword detection todetermine when a user intends to speak a command to the user device.This process may also be referred to as keyword detection, with thewakeword being a specific example of a keyword. Specifically, keyworddetection may be performed without performing linguistic analysis,textual analysis or semantic analysis. Instead, incoming audio (or audiodata) is analyzed to determine if specific characteristics of the audiomatch preconfigured acoustic waveforms, audio signatures, or other datato determine if the incoming audio “matches” stored audio datacorresponding to a keyword.

Thus, the wakeword detection module 1201 may compare audio data tostored models or data to detect a wakeword. One approach for wakeworddetection applies general large vocabulary continuous speech recognition(LVCSR) systems to decode the audio signals, with wakeword searchingconducted in the resulting lattices or confusion networks. LVCSRdecoding may require relatively high computational resources. Anotherapproach for wakeword spotting builds hidden Markov models (HMM) foreach key wakeword word and non-wakeword speech signals respectively. Thenon-wakeword speech includes other spoken words, background noise, etc.There can be one or more HMMs built to model the non-wakeword speechcharacteristics, which are named filler models. Viterbi decoding is usedto search the best path in the decoding graph, and the decoding outputis further processed to make the decision on keyword presence. Thisapproach can be extended to include discriminative information byincorporating hybrid DNN-HMM decoding framework. In another embodiment,the wakeword spotting system may be built on deep neural network(DNN)/recursive neural network (RNN) structures directly, without HMMinvolved. Such a system may estimate the posteriors of wakewords withcontext information, either by stacking frames within a context windowfor DNN, or using RNN. Following-on posterior threshold tuning orsmoothing is applied for decision making. Other techniques for wakeworddetection, such as those known in the art, may also be used.

Once the wakeword is detected, the local device 102 and/or 104 may“wake” and begin transmitting audio data 1202 corresponding to inputaudio 1200 to the remote system 108 for speech processing. Audio datacorresponding to that audio may be sent to remote system 108 for routingto a recipient device or may be sent to the remote system 108 for speechprocessing for interpretation of the included speech (either forpurposes of enabling voice-communications and/or for purposes ofexecuting a command in the speech). The audio data 1202 may include datacorresponding to the wakeword, or the portion of the audio datacorresponding to the wakeword may be removed by the local device 102and/or 104 prior to sending. Further, a local device may “wake” upondetection of speech/spoken audio above a threshold, as described herein.Upon receipt by the remote system 108, an ASR module 1203 may convertthe audio data 1202 into text. The ASR transcribes audio data into textdata representing the words of the speech contained in the audio data1202. The text data may then be used by other components for variouspurposes, such as executing system commands, inputting data, etc. Aspoken utterance in the audio data is input to a processor configured toperform ASR which then interprets the utterance based on the similaritybetween the utterance and pre-established language models 1254 stored inan ASR model knowledge base (ASR Models Storage 1252). For example, theASR process may compare the input audio data with models for sounds(e.g., subword units or phonemes) and sequences of sounds to identifywords that match the sequence of sounds spoken in the utterance of theaudio data.

The different ways a spoken utterance may be interpreted (i.e., thedifferent hypotheses) may each be assigned a probability or a confidencescore representing the likelihood that a particular set of words matchesthose spoken in the utterance. The confidence score may be based on anumber of factors including, for example, the similarity of the sound inthe utterance to models for language sounds (e.g., an acoustic model1253 stored in an ASR Models Storage 1252), and the likelihood that aparticular word that matches the sounds would be included in thesentence at the specific location (e.g., using a language or grammarmodel). Thus, each potential textual interpretation of the spokenutterance (hypothesis) is associated with a confidence score. Based onthe considered factors and the assigned confidence score, the ASRprocess 1203 outputs the most likely text recognized in the audio data.The ASR process may also output multiple hypotheses in the form of alattice or an N-best list with each hypothesis corresponding to aconfidence score or other score (such as probability scores, etc.).

The device or devices performing the ASR processing may include anacoustic front end (AFE) 1256 and a speech recognition engine 1258. Theacoustic front end (AFE) 1256 transforms the audio data from themicrophone into data for processing by the speech recognition engine1258. The speech recognition engine 1258 compares the speech recognitiondata with acoustic models 1253, language models 1254, and other datamodels and information for recognizing the speech conveyed in the audiodata. The AFE 1256 may reduce noise in the audio data and divide thedigitized audio data into frames representing time intervals for whichthe AFE 1256 determines a number of values, called features,representing the qualities of the audio data, along with a set of thosevalues, called a feature vector, representing the features/qualities ofthe audio data within the frame. Many different features may bedetermined, as known in the art, and each feature represents somequality of the audio that may be useful for ASR processing. A number ofapproaches may be used by the AFE to process the audio data, such asmel-frequency cepstral coefficients (MFCCs), perceptual linearpredictive (PLP) techniques, neural network feature vector techniques,linear discriminant analysis, semi-tied covariance matrices, or otherapproaches known to those of skill in the art.

The speech recognition engine 1258 may process the output from the AFE1256 with reference to information stored in speech/model storage(1252). Alternatively, post front-end processed data (such as featurevectors) may be received by the device executing ASR processing fromanother source besides the internal AFE. For example, the user devicemay process audio data into feature vectors (for example using anon-device AFE 1256) and transmit that information to a server across anetwork for ASR processing. Feature vectors may arrive at the remotesystem 108 encoded, in which case they may be decoded prior toprocessing by the processor executing the speech recognition engine1258.

The speech recognition engine 1258 attempts to match received featurevectors to language phonemes and words as known in the stored acousticmodels 1253 and language models 1254. The speech recognition engine 1258computes recognition scores for the feature vectors based on acousticinformation and language information. The acoustic information is usedto calculate an acoustic score representing a likelihood that theintended sound represented by a group of feature vectors matches alanguage phoneme. The language information is used to adjust theacoustic score by considering what sounds and/or words are used incontext with each other, thereby improving the likelihood that the ASRprocess will output speech results that make sense grammatically. Thespecific models used may be general models or may be modelscorresponding to a particular domain, such as music, banking, etc.

The speech recognition engine 1258 may use a number of techniques tomatch feature vectors to phonemes, for example using Hidden MarkovModels (HMMs) to determine probabilities that feature vectors may matchphonemes. Sounds received may be represented as paths between states ofthe HMM and multiple paths may represent multiple possible text matchesfor the same sound.

Following ASR processing, the ASR results may be sent by the speechrecognition engine 1258 to other processing components, which may belocal to the device performing ASR and/or distributed across thenetwork(s). For example, ASR results in the form of a single textualrepresentation of the speech, an N-best list including multiplehypotheses and respective scores, lattice, etc. may be sent to theremote system 108, for natural language understanding (NLU) processing,such as conversion of the text into commands for execution, either bythe user device, by the remote system 108, or by another device (such asa server running a specific application like a search engine, etc.).

The device performing NLU processing 1205 (e.g., server 108) may includevarious components, including potentially dedicated processor(s),memory, storage, etc. As shown in FIG. 12, an NLU component 1205 mayinclude a recognizer 1263 that includes a named entity recognition (NER)module 1262 which is used to identify portions of query text thatcorrespond to a named entity that may be recognizable by the system. Adownstream process called named entity resolution links a text portionto a specific entity known to the system. To perform named entityresolution, the system may utilize gazetteer information (1284 a-1284 n)stored in entity library storage 1282. The gazetteer information may beused for entity resolution, for example matching ASR results withdifferent entities (such as song titles, contact names, etc.) Gazetteersmay be linked to users (for example a particular gazetteer may beassociated with a specific user's music collection), may be linked tocertain domains (such as shopping), or may be organized in a variety ofother ways.

Generally, the NLU process takes textual input (such as processed fromASR 1203 based on the utterance input audio 1200) and attempts to make asemantic interpretation of the text. That is, the NLU process determinesthe meaning behind the text based on the individual words and thenimplements that meaning. NLU processing 1205 interprets a text string toderive an intent or a desired action from the user as well as thepertinent pieces of information in the text that allow a device (e.g.,device 102 and/or 104) to complete that action. For example, if a spokenutterance is processed using ASR 1203 and outputs the text “playJeopardy” the NLU process may determine that the user intended for thedevice to initiate a game of Jeopardy.

The NLU may process several textual inputs related to the sameutterance. For example, if the ASR 1203 outputs N text segments (as partof an N-best list), the NLU may process all N outputs to obtain NLUresults.

As will be discussed further below, the NLU process may be configured toparse and tag to annotate text as part of NLU processing. For example,for the text “play You're Welcome,” “play” may be tagged as a command(to access a song and output corresponding audio) and “You're Welcome”may be tagged as a specific video to be played.

To correctly perform NLU processing of speech input, an NLU process 1205may be configured to determine a “domain” of the utterance so as todetermine and narrow down which services offered by the endpoint device(e.g., remote system 108 or the user device) may be relevant. Forexample, an endpoint device may offer services relating to interactionswith a telephone service, a contact list service, a calendar/schedulingservice, a music player service, etc. Words in a single text query mayimplicate more than one service, and some services may be functionallylinked (e.g., both a telephone service and a calendar service mayutilize data from the contact list).

The named entity recognition (NER) module 1262 receives a query in theform of ASR results and attempts to identify relevant grammars andlexical information that may be used to construe meaning. To do so, theNLU module 1205 may begin by identifying potential domains that mayrelate to the received query. The NLU storage 1273 includes a databaseof devices (1274 a-1274 n) identifying domains associated with specificdevices. For example, the user device may be associated with domains formusic, telephony, calendaring, contact lists, and device-specificcommunications, but not video. In addition, the entity library mayinclude database entries about specific services on a specific device,either indexed by Device ID, User ID, or Household ID, or some otherindicator.

In NLU processing, a domain may represent a discrete set of activitieshaving a common theme, such as “shopping,” “music,” “calendaring,” etc.As such, each domain may be associated with a particular recognizer1263, language model and/or grammar database (1276 a-1276 n), aparticular set of intents/actions (1278 a-1278 n), and a particularpersonalized lexicon (1286). Each gazetteer (1284 a-1284 n) may includedomain-indexed lexical information associated with a particular userand/or device. For example, the Gazetteer A (1284 a) includesdomain-index lexical information 1286 aa to 1286 an. A user'scontact-list lexical information might include the names of contacts.Since every user's contact list is presumably different, thispersonalized information improves entity resolution.

As noted above, in traditional NLU processing, a query may be processedapplying the rules, models, and information applicable to eachidentified domain. For example, if a query potentially implicates bothcommunications and, for example, music, the query may, substantially inparallel, be NLU processed using the grammar models and lexicalinformation for communications, and will be processed using the grammarmodels and lexical information for music. The responses based on thequery produced by each set of models is scored, with the overall highestranked result from all applied domains ordinarily selected to be thecorrect result.

An intent classification (IC) module 1264 parses the query to determinean intent or intents for each identified domain, where the intentcorresponds to the action to be performed that is responsive to thequery. Each domain is associated with a database (1278 a-1278 n) ofwords linked to intents. For example, a music intent database may linkwords and phrases such as “quiet,” “volume off,” and “mute” to a “mute”intent. A voice-message intent database, meanwhile, may link words andphrases such as “send a message,” “send a voice message,” “send thefollowing,” or the like. The IC module 1264 identifies potential intentsfor each identified domain by comparing words in the query to the wordsand phrases in the intents database 1278. In some instances, thedetermination of an intent by the IC module 1264 is performed using aset of rules or templates that are processed against the incoming textto identify a matching intent.

In order to generate a particular interpreted response, the NER 1262applies the grammar models and lexical information associated with therespective domain to actually recognize a mention of one or moreentities in the text of the query. In this manner, the NER 1262identifies “slots” or values (i.e., particular words in query text) thatmay be needed for later command processing. Depending on the complexityof the NER 1262, it may also label each slot with a type of varyinglevels of specificity (such as noun, place, city, artist name, songname, or the like). Each grammar model 1276 includes the names ofentities (i.e., nouns) commonly found in speech about the particulardomain (i.e., generic terms), whereas the lexical information 1286 fromthe gazetteer 1284 is personalized to the user(s) and/or the device. Forinstance, a grammar model associated with the shopping domain mayinclude a database of words commonly used when people discuss shopping.

The intents identified by the IC module 1264 are linked todomain-specific grammar frameworks (included in 1276) with “slots” or“fields” to be filled with values. Each slot/field corresponds to aportion of the query text that the system believes corresponds to anentity. To make resolution more flexible, these frameworks wouldordinarily not be structured as sentences, but rather based onassociating slots with grammatical tags. For example, if “play a song”is an identified intent, a grammar (1276) framework or frameworks maycorrespond to sentence structures such as “play the song {song title}”and/or “play {song title}.”

For example, the NER module 1262 may parse the query to identify wordsas subject, object, verb, preposition, etc., based on grammar rulesand/or models, prior to recognizing named entities. The identified verbmay be used by the IC module 1264 to identify intent, which is then usedby the NER module 1262 to identify frameworks. A framework for theintent of “play a song,” meanwhile, may specify a list of slots/fieldsapplicable to play the identified “song” and any object modifier (e.g.,specifying a music collection from which the song should be accessed) orthe like. The NER module 1262 then searches the corresponding fields inthe domain-specific and personalized lexicon(s), attempting to matchwords and phrases in the query tagged as a grammatical object or objectmodifier with those identified in the database(s).

This process includes semantic tagging, which is the labeling of a wordor combination of words according to their type/semantic meaning.Parsing may be performed using heuristic grammar rules, or an NER modelmay be constructed using techniques such as hidden Markov models,maximum entropy models, log linear models, conditional random fields(CRF), and the like.

The frameworks linked to the intent are then used to determine whatdatabase fields should be searched to determine the meaning of thesephrases, such as searching a user's gazette for similarity with theframework slots. If the search of the gazetteer does not resolve theslot/field using gazetteer information, the NER module 1262 may searchthe database of generic words associated with the domain (in theknowledge base 1272). So, for instance, if the query was “play You'reWelcome,” after failing to determine which song titled “You're Welcome”should be played, the NER component 1262 may search the domainvocabulary for the phrase “You're Welcome.” In the alternative, genericwords may be checked before the gazetteer information, or both may betried, potentially producing two different results.

The output data from the NLU processing (which may include tagged text,commands, etc.) may then be sent to a command processor 1207. Thedestination command processor 1207 may be determined based on the NLUoutput. For example, if the NLU output includes a command to send amessage, the destination command processor 1207 may be a message sendingapplication, such as one located on the user device or in a messagesending appliance, configured to execute a message sending command. Ifthe NLU output includes a search request, the destination commandprocessor 1207 may include a search engine processor, such as onelocated on a search server, configured to execute a search command.After the appropriate command is generated based on the intent of theuser, the command processor 1207 may provide some or all of thisinformation to a text-to-speech (TTS) engine 1208. The TTS engine 1208may then generate an actual audio file for outputting the audio datadetermined by the command processor 1207 (e.g., “playing your song,” or“lip syncing to . . . ”). After generating the file (or “audio data”),the TTS engine 1207 may provide this data back to the remote system 108.

The NLU operations of existing systems may take the form of amulti-domain architecture. Each domain (which may include a set ofintents and entity slots that define a larger concept such as music,books etc. as well as components such as trained models, etc. used toperform various NLU operations such as NER, IC, or the like) may beconstructed separately and made available to an NLU component 1205during runtime operations where NLU operations are performed on text(such as text output from an ASR component 1203). Each domain may havespecially configured components to perform various steps of the NLUoperations.

For example, in a NLU system, the system may include a multi-domainarchitecture consisting of multiple domains for intents/commandsexecutable by the system (or by other devices connected to the system),such as music, video, books, and information. The system may include aplurality of domain recognizers, where each domain may include its ownrecognizer 1263. Each recognizer may include various NLU components suchas an NER component 1262, IC module 1264 and other components such as anentity resolver, or other components.

For example, a messaging domain recognizer 1263-A (Domain A) may have anNER component 1262-A that identifies what slots (i.e., portions of inputtext) may correspond to particular words relevant to that domain. Thewords may correspond to entities such as (for the messaging domain) arecipient. An NER component 1262 may use a machine learning model, suchas a domain specific conditional random field (CRF) to both identify theportions corresponding to an entity as well as identify what type ofentity corresponds to the text portion. The messaging domain recognizer1263-A may also have its own intent classification (IC) component 1264-Athat determines the intent of the text assuming that the text is withinthe proscribed domain. An IC component may use a model, such as a domainspecific maximum entropy classifier to identify the intent of the text,where the intent is the action the user desires the system to perform.For this purpose, the remote system computing device 108 may include amodel training component. The model training component may be used totrain the classifier(s)/machine learning models discussed above.

As noted above, multiple devices may be employed in a single speechprocessing system. In such a multi-device system, each of the devicesmay include different components for performing different aspects of thespeech processing. The multiple devices may include overlappingcomponents. The components of the user device and the remote system 108,as illustrated herein are exemplary, and may be located in a stand-alonedevice or may be included, in whole or in part, as a component of alarger device or system, may be distributed across a network or multipledevices connected by a network, etc.

While the foregoing invention is described with respect to the specificexamples, it is to be understood that the scope of the invention is notlimited to these specific examples. Since other modifications andchanges varied to fit particular operating requirements and environmentswill be apparent to those skilled in the art, the invention is notconsidered limited to the example chosen for purposes of disclosure, andcovers all changes and modifications which do not constitute departuresfrom the true spirit and scope of this invention.

Although the application describes embodiments having specificstructural features and/or methodological acts, it is to be understoodthat the claims are not necessarily limited to the specific features oracts described. Rather, the specific features and acts are merelyillustrative some embodiments that fall within the scope of the claimsof the application.

What is claimed is:
 1. A system comprising: one or more processors; andnon-transitory computer-readable media storing computer-executableinstructions that, when executed by the one or more processors, causethe one or more processors to perform operations comprising: determiningthat content associated with an application is being displayed on adevice; receiving, from a remote system: a first identifier associatedwith the content being displayed; and a second identifier associatedwith the content being displayed; based at least in part on determiningthat the content is being displayed, identifying metadata associatedwith the content; identifying, utilizing the metadata, a portion of thecontent that, when selected by a user, causes updated content to bedisplayed, the first identifier and the second identifier correspondingto the portion of the content; generating a modified identifier thatcorresponds to the first identifier and the second identifier; causingdisplay of an overlay corresponding to the first identifier and thesecond identifier associated with the portion of the content, whereinthe overlay includes the modified identifier; receiving audio datarepresenting a user utterance; sending the audio data to the remotesystem; receiving, from the remote system, a command to perform anaction with respect to the portion of the content, the commandindicating that the audio data is associated with selection of themodified identifier; and causing the action to be performed inassociation with the portion of the content.
 2. The system of claim 1,wherein the content comprises first content, the portion comprises afirst portion, and the operations further comprising: receiving eventdata indicating second content being displayed; determining a secondportion of the second content that, when selected by the user, causesthird content to be displayed; and sending, to the remote system, screendata identifying the second portion of the second content, the secondportion differing from the first portion.
 3. The system of claim 1,wherein the command indicates a value associated with the action, andcausing the action to be performed comprises causing the action to beperformed based at least in part on: determining, fromdocument-object-model information indicating nodes associated with thecontent, a node of the content that corresponds to the portion of thecontent; and causing the action to be performed with respect to thenode.
 4. The system of claim 1, wherein the command indicates a valueassociated with the action, and causing the action to be performedcomprises causing the action to be performed based at least in part on:determining, from document-object-model information indicating nodesassociated with the content, a first node of the content thatcorresponds to the value; determining, from the document-object-modelinformation, a second node of the content that corresponds to the value;determining a first confidence level that the first node corresponds tothe value; determining a second confidence level that the second nodecorresponds to the value; and causing the action to be performed withrespect to the first node based on the first confidence level beingprioritized over the second confidence level.
 5. A method, comprising:determining that content associated with an application is beingdisplayed on a device; receiving: a first identifier associated with thecontent being displayed; and a second identifier associated with thecontent being displayed; based at least in part on determining that thecontent is being displayed, identifying metadata associated with thecontent; identifying, based at least in part on the metadata, a portionof the content that is selectable, the first identifier and the secondidentifier corresponding to the portion of the content; generating amodified identifier that corresponds to the first identifier and thesecond identifier; causing display of an overlay corresponding to thefirst identifier and the second identifier associated with the portionof the content, the overlay including the modified identifier; sending,to a remote system, audio data representing a user utterance; receiving,from the remote system, a command to perform an action with respect tothe portion of the content, the command indicating that the audio datais associated with selection of the modified identifier; and causing theaction to be performed.
 6. The method of claim 5, wherein receiving thecommand comprises receiving the command based at least in part on anindication that the application has been authorized to receive thecommand.
 7. The method of claim 5, wherein the command indicates a valueassociated with the action, and causing the action to be performedcomprises causing the action to be performed based at least in part on:determining, from document-object-model information indicating nodesassociated with the content, a first node of the content thatcorresponds to the value; determining, from the document-object-modelinformation, a second node of the content that corresponds to the value;determining a first confidence level that the first node corresponds tothe value; determining a second confidence level that the second nodecorresponds to the value; and causing the action to be performed withrespect to the first node based at least in part on the first confidencelevel being prioritized over the second confidence level.
 8. The methodof claim 5, wherein the content comprises first content, the portioncomprises a first portion, the screen data comprises first screen data,and further comprising: receiving event data indicating second contentbeing displayed; based at least in part on the event data indicating thesecond content is being displayed, identifying a second portion of thesecond content that, when selected by a user, causes third content to bedisplayed; and sending, to the remote system, second screen dataidentifying the second portion of the second content, the second portiondiffering from the first portion.
 9. The method of claim 5, whereinidentifying the portion of the content comprises identifying the portionof the content based at least in part on document-object-model dataassociated with the application.
 10. The method of claim 5, whereincausing the action to be performed comprises causing the action to beperformed based at least in part on determining, fromdocument-object-model information indicating nodes associated with thecontent, a node that corresponds to the portion of the content.
 11. Themethod of claim 5, wherein: the device displaying the content is a firstdevice having a display; the audio data is received at a second devicewithout a display; and the remote system is associated with the seconddevice and includes a speech-processing system.
 12. A system,comprising: one or more processors; and non-transitory computer-readablemedia storing computer-executable instructions that, when executed bythe one or more processors, cause the one or more processors to performoperations comprising: receiving screen data indicating a selectableportion of content of an application being displayed by a device, thescreen data indicating the selectable portion of the content based atleast in part on metadata associated with the content; receiving: afirst identifier associated with the selectable portion of the content;and a second identifier associated with the selectable portion of thecontent; generating a modified identifier that corresponds to the firstidentifier and the second identifier; causing display of the modifiedidentifier overlaid on the selectable portion of the content; receivingaudio data representing a user utterance, the audio data associated withthe device; determining intent data based at least in part on the screendata and the audio data; generating, based at least in part on theintent data, a command indicating an action to be performed with respectto the selectable portion of the content, the command indicating thatthe audio data is associated with selection of the modified identifier;and sending the command to the device such that the device is caused toperform the action.
 13. The system of claim 12, wherein generating thecommand comprises generating the command based at least in part on anindication that the application has been authorized to receive thecommand.
 14. The system of claim 12, wherein generating the commandcomprises generating the command based at least in part on determining avalue associated with the action utilizing the screen data and the audiodata.
 15. The system of claim 12, the operations further comprisingselecting, from speech processing components associated with the system,a speech processing component to generate the command, the selectingbased at least in part on the screen data.
 16. The system of claim 12,the operations further comprising: sending, to the device, identifierdata indicating that identifier content is to be displayed by thedevice; determining that the intent data corresponds to a selection ofthe identifier content; and wherein generating the command is based atleast in part on determining that the intent data corresponds to theselection of the identifier content.
 17. The system of claim 12, whereinthe selectable portion of the content comprises a first selectableportion of the content, and the operations further comprising:associating a third identifier with a second selectable portion of thecontent; determining that the action is performable on the firstselectable portion and the second selectable portion; generating, basedat least in part on determining that the action is performable on thefirst selectable portion and the second selectable portion, modifiedidentifier content that corresponds to the first identifier and thethird identifier; and sending, to the device, the modified identifiercontent for presentation by the device.
 18. The system of claim 12,wherein determining the intent data comprises determining the intentdata based at least in part on a finite state transducer associated withthe application.
 19. The system of claim 12, wherein the contentcomprises first content, the screen data comprises first screen data,and the operations further comprising: receiving, from the device,second screen data indicating that second content associated with theapplication is being displayed by the device; and wherein generating thecommand comprises generating the command based at least in part ondetermining a value associated with the action based at least in part onthe second screen data.